Я бы хотел установить зависимости из моего частного PyPI, указав их в setup.py
.
Я уже пытался указать, где найти зависимости в dependency_links
следующим образом:
setup(
...
install_requires=["foo==1.0"],
dependency_links=["https://my.private.pypi/"],
...
)
Я также пытался определить весь URL-адрес в пределах dependency_links
:
setup(
...
install_requires=[],
dependency_links=["https://my.private.pypi/foo/foo-1.0.tar.gz"],
...
)
, но когда я пытаюсь установить с помощью python setup.py install
, ни один из них не работал для меня.
Кто-нибудь может мне помочь?
РЕДАКТИРОВАТЬ:
С первым фрагментом кода я получил эту ошибку:
...
Installed .../test-1.0.0-py3.7.egg
Processing dependencies for test==1.0.0
Searching for foo==1.0
Reading https://my.private.pypi/
Reading https://pypi.org/simple/foo/
Couldn't find index page for 'foo' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.org/simple/
No local packages or working download links found for foo==1.0
error: Could not find suitable distribution for Requirement.parse('foo==1.0')
в то время как во втором случае я не получил никакой ошибки, просто следующее:
...
Installed .../test-1.0.0-py3.7.egg
Processing dependencies for test==1.0.0
Finished processing dependencies for test==1.0.0
ОБНОВЛЕНИЕ 1:
Я пытался изменить setup.py
следуя инструкциям sinoroc. Теперь мой setup.py
выглядит следующим образом:
setup(
...
install_requires=["foo==1.0"],
dependency_links=["https://username:password@my.private.pypi/folder/foo/foo-1.0.tar.gz"],
...
)
Я собрал библиотеку test
с python setup.py sdist
и попытался установить ее с pip install /tmp/test/dist/test-1.0.0.tar.gz
, но я все еще получаю эту ошибку:
Processing /tmp/test/dist/test-1.0.0.tar.gz
ERROR: Could not find a version that satisfies the requirement foo==1.0 (from test==1.0.0) (from versions: none)
ERROR: No matching distribution found for foo==1.0 (from test==1.0.0)
Что касается частного PyPi, у меня нет никакой дополнительной информации, потому что я не являюсь ее администратором. Как видите, у меня просто есть учетные данные ( имя пользователя и пароль ) для этого сервера.
Кроме того, PyPi организован в подпапках https://my.private.pypi/folder/..
где зависимость, которую я хочу установить:
ОБНОВЛЕНИЕ 2:
Запустив pip install --verbose /tmp/test/dist/test-1.0.0.tar.gz
, можно найти только 1 место, где искать библиотекуfoo
, на общедоступном сервере https://pypi.org/simple/foo/
, а не на нашем частном сервере https://my.private.pypi/folder/foo/
.
Здесь вывод:
...
1 location(s) to search for versions of foo:
* https://pypi.org/simple/foo/
Getting page https://pypi.org/simple/foo/
Found index url https://pypi.org/simple
Looking up "https://pypi.org/simple/foo/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.org:443
https://pypi.org:443 "GET /simple/foo/ HTTP/1.1" 404 13
Status code 404 not in (200, 203, 300, 301)
Could not fetch URL https://pypi.org/simple/foo/: 404 Client Error: Not Found for url: https://pypi.org/simple/foo/ - skipping
Given no hashes to check 0 links for project 'foo': discarding no candidates
ERROR: Could not find a version that satisfies the requirement foo==1.0 (from test==1.0.0) (from versions: none)
Cleaning up...
Removing source in /private/var/...
Removed build tracker '/private/var/...'
ERROR: No matching distribution found for foo==1.0 (from test==1.0.0)
Exception information:
Traceback (most recent call last):
...