pip не установил пакет из Requirements.txt, но сделал из команды - PullRequest
1 голос
/ 15 февраля 2020

У меня есть два файла, связанных с требованиями. Я получаю эту ошибку при вызове:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages

Ошибка:

Looking in links: file:///tmp/packages
Requirement already satisfied: asgiref==3.2.3 in d:\virtual_envs\scolarte\lib\site-packages (from -r requirements-dev.txt (line 1)) (3.2.3)
Collecting boto3==1.12.0 (from -r requirements-dev.txt (line 2))
  Url 'file:///tmp/packages' is ignored: it is neither a file nor a directory.
  Could not find a version that satisfies the requirement boto3==1.12.0 (from -r requirements-dev.txt (line 2)) (from versions: )
No matching distribution found for boto3==1.12.0 (from -r requirements-dev.txt (line 2))

Но пакет установлен при вызове:

pip install boto3==1.12.0

почему?

a) needs.txt:

-r requirements-dev.txt
gunicorn
psycopg2

b) needs-dev.txt

asgiref==3.2.3
boto3==1.12.0
botocore==1.14.16
defusedxml==0.6.0
diff-match-patch==20181111
dj-database-url==0.5.0
dj-static==0.0.6
Django==3.0.3
django-crispy-forms==1.8.1
django-import-export==2.0.1
django-sendgrid-v5==0.8.1
django-storages==1.9.1
djangorestframework==3.11.0
docutils==0.15.2
et-xmlfile==1.0.1
future==0.18.2
jdcal==1.4.1
jmespath==0.9.4
MarkupPy==1.14
numpy==1.18.1
odfpy==1.4.1
openpyxl==3.0.3
pandas==0.25.3
Pillow==7.0.0
python-dateutil==2.8.1
python-decouple==3.3
python-http-client==3.2.4
pytz==2019.3
PyYAML==5.3
s3transfer==0.3.3
sendgrid==6.1.1
six==1.14.0
sqlparse==0.3.0
static3==0.7.0
tablib==0.14.0
urllib3==1.25.8
xlrd==1.2.0
xlwt==1.3.0

1 Ответ

3 голосов
/ 15 февраля 2020

Когда вы используете

pip install boto3==1.12.0

Вы устанавливаете из PyPI (индекс пакета Python) . Принимая во внимание, что при использовании опции --no-index в

pip install -r requirements.txt --no-index --find-links file:///tmp/packages

вы явно указываете pip не искать его в PyPI.

Форма Документация PyPI

- без индекса

Игнорировать индекс пакета (вместо просмотра только URL --find-links).

-f, --find-links <url>

Если URL-адрес или путь к файлу html, то проанализируйте ссылки на архивы. Если локальный путь или файл: // url - это каталог, ищите архивы в списке каталогов.

Также на как pip находит пакеты (выделено мной)

pip ищет пакеты в нескольких местах: в PyPI (если не отключен с помощью --no-index) , в локальной файловой системе и в любых дополнительных репозиториях указывается через --find-links или --index-url. Нет упорядочения в местах поиска. Вместо этого все они проверяются, и выбирается «наилучшее» соответствие требованиям (с точки зрения номера версии - подробности см. В PEP 440).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...