2013-09-16 33 views
12

Tôi đang cố gắng viết tệp cài đặt setup.py cho một dự án riêng tư, có cả phụ thuộc công khai và riêng tư. Những người dùng chung được lưu trữ trên PyPI, trong khi những người riêng được lưu trữ trên một máy chủ chạy simplepypi.Làm cách nào để cài đặt các gói được lưu trữ trong PyPI riêng bằng setup.py?

Tôi muốn cả phụ thuộc công khai và riêng tư được giải quyết và tìm nạp trong khi cài đặt.

tôi như vậy, thêm vào phụ thuộc của tôi để setup.py:

setup(
    ... 
    install_requires = [ 
     # public dependencies 
     'argparse==1.2.1', 
     'beautifulsoup4==4.1.3', 
     'lxml==3.1.0', 
     'mongoengine==0.8.2', 
     'pymongo==2.5.2', 
     'requests==1.1.0', 
     'Cython==0.18', 
     # private dependencies 
     'myprivatepackage1', 
     'myprivatepackage2' 
    ], 
    dependency_links=['http://pypi.myserver.com/packages'], 
    ... 
) 

tôi xây dựng tarball gói bằng cách sử dụng lệnh python setup.py sdist và cài đặt nó trong một virtualenv kích hoạt sử dụng pip install --verbose path/to/tarball.tar.gz.

Tuy nhiên, đường nhật ký pip không đề cập đến máy chủ PyPI riêng của tôi ở bất kỳ đâu và https://pypi.python.org/simple/ dường như đã được truy vấn hai lần.

Running setup.py egg_info for package from file:///home/b/code/mapado/mypackage/dist/mypackage-0.5.1.tar.gz 
    running egg_info 
    creating pip-egg-info/mypackage.egg-info 
    writing requirements to pip-egg-info/mypackage.egg-info/requires.txt 
    writing pip-egg-info/mypackage.egg-info/PKG-INFO 
    writing top-level names to pip-egg-info/mypackage.egg-info/top_level.txt 
    writing dependency_links to pip-egg-info/mypackage.egg-info/dependency_links.txt 
    writing manifest file 'pip-egg-info/mypackage.egg-info/SOURCES.txt' 
    warning: manifest_maker: standard file '-c' not found 

    reading manifest file 'pip-egg-info/mypackage.egg-info/SOURCES.txt' 
    reading manifest template 'MANIFEST.in' 
    writing manifest file 'pip-egg-info/mypackage.egg-info/SOURCES.txt' 
Downloading/unpacking myprivatepackage (from mypackage==0.5.1) 
    Could not fetch URL https://pypi.python.org/simple/myprivatepackage/: HTTP Error 404: Not Found (myprivatepackage does not have any releases) 
    Will skip URL https://pypi.python.org/simple/myprivatepackage/ when looking for download links for myprivatepackage (from mypackage==0.5.1) 
    Could not fetch URL https://pypi.python.org/simple/myprivatepackage/: HTTP Error 404: Not Found (myprivatepackage does not have any releases) 
    Will skip URL https://pypi.python.org/simple/myprivatepackage/ when looking for download links for myprivatepackage (from mypackage==0.5.1) 
    Could not find any downloads that satisfy the requirement myprivatepackage (from mypackage==0.5.1) 
Cleaning up... 

Tôi đang thiếu gì?

Cảm ơn bạn rất nhiều!

Trả lời

10

có vẻ như bạn didnt chỉ định máy chủ của bạn như doc của simplepy nói rằng bạn cần phải thiết lập ~/.pipyrc của bạn với tên máy tốt như

Để sử dụng nó chạy "simplepypi". Bạn có thể tải các gói theo:

Modify your ~/.pypirc so it looks like: 

    [distutils] 
    index-servers = 
     pypi 
     local 

    [local] 
    username: <whatever> 
    password: <doesn't matter, see above> 
    repository: http://127.0.0.1:8000 

    [pypi] 
    ... 

sau đó bạn sẽ tải lên gói của bạn trên đó

python setup.py sdist upload -r local 

và có thể cài đặt nó từ đó

pip install -i http://127.0.0.1:8000/pypi <your favorite package> 

Hy vọng điều này sẽ giúp.

+1

Tôi đã sửa nó! Sai lầm của tôi là, như bạn đã chỉ ra, tôi cần thêm URL '' "http://127.0.0.1:8000/pypi/" '' vào '' dependency_links''. ** Cảnh báo **: nó cần phải là '' "http://127.0.0.1:8000/pypi/" '' và không phải '' "http://127.0.0.1:8000/pypi" '', như sau đó trả lại 404. –

+0

chụp đẹp! cám ơn –