2013-09-16 2 views
12

Я пытаюсь написать установочный файл setup.py для частного проекта, который имеет как государственные, так и частные зависимости. Публичные размещаются на PyPI, а частные - на сервере с simplepypi.Как установить пакеты, размещенные в приватном PyPI, используя setup.py?

Я бы хотел, чтобы как государственные, так и частные зависимости были разрешены и извлечены во время установки.

Таким образом, я добавил свою зависимость в 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'], 
    ... 
) 

Я строй пакет тарболла с помощью команды python setup.py sdist и установить его в активированном virtualenv с использованием pip install --verbose path/to/tarball.tar.gz.

Тем не менее, строки журнала протокола не упоминают мой частный сервер PyPI в любом месте, и https://pypi.python.org/simple/, кажется, был запрошен дважды.

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... 

Что мне не хватает?

спасибо!

ответ

10

это выглядит, как вы не определил своего хозяина, как на документ из simplepy сказал, что вы должны настроить ваш ~/.pipyrc с хорошим именем хоста, как

Чтобы использовать его запустить «simplepypi». Вы можете загрузить пакеты по:

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] 
    ... 

тогда вы будете загружать свой пакет на нем

python setup.py sdist upload -r local 

и смогли установить его оттуда

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

Надеется, что это поможет.

+1

Я исправил его! Моя ошибка заключалась в том, что, как вы указали, мне нужно было добавить URL '' "http://127.0.0.1:8000/pypi/" '' to 'dependency_links''. ** Предупреждение **: оно должно быть '' "http://127.0.0.1:8000/pypi/" '', а не '' "http://127.0.0.1:8000/pypi" '', поскольку последний возвращает 404. –

+0

хорошая стрелялка! спасибо –

Смежные вопросы