2013-08-05 25 views
24

Chúng ta có nhiều gói python riêng và muốn tạo kho pypi địa phương cho họ sử dụng giao diện đơn giản như https://pypi.python.org/simple/cách tạo chỉ mục kho lưu trữ pypi của chính địa phương mà không có gương?

kho này tôi muốn tạo cho địa phương chỉ mà không cần bất kỳ gương vì lý do an ninh, và nó sẽ được đặt dưới của apache kiểm soát

Lệnh pypimirror ngoại hình phải được khởi tạo một lần, cần phải phản chiếu.

Làm cách nào để tạo chỉ mục đơn giản PyPi dựa trên gói python cục bộ.

Bất kỳ tập lệnh đơn giản nào khác cho điều này?

+1

bản sao có thể có của [Thiết lập máy chủ PyPi cục bộ với bộ gói tùy chỉnh] (http://stackoverflow.com/questions/14674873/setting-up-a-local-pypi-server-with-custom-set- của các gói) –

+2

có thể trùng lặp của [Làm thế nào để cuộn pypi của riêng tôi?] (http://stackoverflow.com/questions/1235331/how-to-roll-my-own-pypi) – aquavitae

Trả lời

15

Vì bạn hỏi để trả lời ở đây:

Hãy xem pip2pi, nó có vẻ là chính xác những gì bạn đang tìm kiếm.

+0

đây là cách đơn giản nhất để xử lý cho trường hợp của tôi –

+2

Có vẻ như 'pip2pi' được thiết kế cho các gói công khai đã có trên PyPI, đúng không? Tôi nghĩ rằng câu hỏi ban đầu là về việc tạo ra một kho lưu trữ cho các gói được phát triển trong nhà. –

3

Nếu bạn đang nói về việc chạy simplepypi thì bạn sẽ có máy chủ của bạn để thêm gói và phân phát chúng. Để trích dẫn tài liệu:

- Running this on the setup.py of your favorite package: 

    python setup.py sdist upload -r local 

Nếu bạn đã sử dụng một trong hai os.walk hoặc glob.glob vào thư mục trang web gói địa phương của bạn, bạn có thể nhanh chóng lọc cho setup.py trong mỗi gói/thư mục và gọi trên về họ.

Nếu bạn chỉ cần tạo thư mục tệp tar.gz hoàn chỉnh với danh sách .html của chúng thì bạn có thể sử dụng glob.glob ở cấp cao nhất của thư mục gói trang web của bạn - tar.gz mỗi thư mục lần lượt và thêm tên tệp kết quả vào danh sách - sau đó bạn có thể tạo index.html từ danh sách đó.

Bạn có thể sử dụng bất kỳ một số lượng lớn các template động cơ cho điều này hoặc tạo ra nó cho mình:

import glob 
filelist = glob.glob("*.tar.gz") 
tags = ['<A href="file:Where/%s">%s</A>' % (s,s) for s in tags] 
head = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<HTML> 
<HEAD> 
<TITLE></TITLE> 
<META NAME="Generator" CONTENT="Python Script"> 
<META NAME="Keywords" CONTENT="Cheeseshop"> 
<META NAME="Description" CONTENT="List of local python packages"> 
</HEAD> 

<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#FF0000" VLINK="#800000" ALINK="#FF00FF" BACKGROUND="?"> 
""" 
tail = """</BODY></HTML>""" 
tags.insert(0,head) 
tags.append(tail) 
page = "\n".join(tags) 

Sau đó lưu hoặc phục vụ quý khách trang.

+0

yêu cầu một máy chủ pypi cục bộ, mà tôi muốn tránh. –

5

Không có gì đặc biệt về gương và bạn có thể sử dụng mod_rewrite để tự thiết lập.

  1. Đổ gói của bạn vào thư mục được ánh xạ tới URL. Ở đây tôi đang sử dụng /url/to/my/pypi/ một ví dụ. Hệ thống phân cấp thư mục phải là /foo/bar/simple/[name of package]/[name of tarball]

  2. Thêm thông tin sau vào .htaccess hoặc cấu hình chung cho thư mục mà bạn gói. Khối cuối cùng của dòng này là một mùa thu trở lại chỉ số pypi toàn cầu:

    Options +Indexes 
    
    RewriteEngine On 
    
    RewriteRule ^/robots.txt - [L] 
    RewriteRule ^/icons/.* - [L] 
    RewriteRule ^/index\..* - [L] 
    
    RewriteCond /foo/bar/simple/ !-f 
    RewriteCond /foo/bar/simple/ !-d 
    RewriteRule ^/(.*)/?$ http://pypi.python.org/ [R,L] 
    
  3. Cập nhật ~/.pip/pip.conf của bạn để trỏ đến kho mới:

    [global] 
    index-url = http://localhost/url/to/my/pypi/ 
    

    Hoặc sử dụng tùy chọn -i http://localhost/url/to/my/pypi/ tại dòng lệnh.

+0

Bạn chỉ thực hiện phần "Tùy chọn + Chỉ mục" của bướC# 2 cho "chỉ địa phương" làm câu hỏi được yêu cầu. Nhưng chuyển hướng rõ ràng sang pypi cho những thứ không phải cục bộ cũng hữu ích. :) – dannysauer

18

Chúng tôi có nhu cầu tương tự tại công ty của mình. Về cơ bản làm thế nào chúng ta có thể tải lên các gói "nguồn đóng" vào một chỉ mục trong khi có thể cài đặt chúng như thể chúng đang ở trên PyPI?

Chúng tôi đã tài trợ một dự án gọi là devpi hoạt động như bộ đệm PyPI (các gói bạn truy cập từ PyPI sẽ được lưu trữ trên máy chủ của bạn) cũng như máy chủ chỉ mục mạnh và nhanh. Tài liệu có sẵn tại http://doc.devpi.net/latest/.

Tiếp theo trên lộ trình đang phản chiếu cho việc triển khai đa địa lý. Để đạp lốp trên máy của bạn mất khoảng 5 phút (xem hướng dẫn bắt đầu nhanh). Cuối cùng devpi tương thích với cả pip và easy_install (tức là bạn không cần máy khách devpi được cài đặt trên máy của bạn).

Hy vọng trợ giúp này.

+1

Ít quá mức cần thiết cho trường hợp đơn giản của tôi, nhưng tôi bỏ phiếu vì nó trông khá ổn định và dễ sử dụng. –

+2

devpi là chính xác những gì tôi đang tìm kiếm. Nó hoạt động như một máy chủ pypi và bạn có thể sử dụng lệnh 'pip' mặc định để quản lý các gói. Dễ cài đặt và dễ sử dụng. Để sử dụng trong môi trường ảo, daemon có thể được khởi động/dừng lại trong các hook (post) kích hoạt. – bouke

Các vấn đề liên quan