Почему установка pip не удалась, если я не прикрепил версию? - PullRequest
1 голос
/ 30 октября 2019

В моем репозитории Pypi есть пакет, в котором версия имеет префикс, например package_foo:bar-0.1.0.

Я могу установить этот пакет, например, с pip install package_foo>=bar-0, pip install package_foo==bar-0.1.0, pip install package_foo>=bar-0,<bar-1 .. однако, выполнение простого pip install package_foo завершается неудачно с:

ERROR: Could not find a version that satisfies the requirement package_foo (from versions: bar-0.1.0)
ERROR: No matching distribution found for package_foo

Какая наиболее вероятная причина этого? Обратите внимание, что это необычная проблема. Обычно проблема в том, что у кого-то есть проблемы с закреплением версии, что не в моем случае. Также обратите внимание, что pip фактически обнаруживает версию (from versions: bar-0.1.0), так почему она не устанавливается?

ОБНОВЛЕНИЕ

вывод pip install -vv package_foo

Created temporary directory: /private/var/folders/mv/0frvv9jj44d68kzfvgw72wvc0000gn/T/pip-ephem-wheel-cache-2gg4a0q5
Created temporary directory: /private/var/folders/mv/0frvv9jj44d68kzfvgw72wvc0000gn/T/pip-req-tracker-p4ppfxwu
Created requirements tracker '/private/var/folders/mv/0frvv9jj44d68kzfvgw72wvc0000gn/T/pip-req-tracker-p4ppfxwu'
Created temporary directory: /private/var/folders/mv/0frvv9jj44d68kzfvgw72wvc0000gn/T/pip-install-1atqi_8x
Looking in indexes: https://pypi.example.com/repository/pypi-all/simple
1 location(s) to search for versions of package-foo:
* https://pypi.example.com/repository/pypi-all/simple/package-foo/
Getting page https://pypi.example.com/repository/pypi-all/simple/package-foo/
Found credentials in url for pypi.example.com
Looking up "https://pypi.example.com/repository/pypi-all/simple/package-foo/" in the cache
Request header has "max_age" as 0, cache bypassed
Starting new HTTPS connection (1): pypi.example.com:443
https://pypi.example.com:443 "GET /repository/pypi-all/simple/package-foo/ HTTP/1.1" 200 None
Updating cache with response from "https://pypi.example.com/repository/pypi-all/simple/package-foo/"
Analyzing links from page https://pypi.example.com/repository/pypi-all/simple/package-foo/
  Found link https://pypi.example.com/repository/pypi-all/packages/package-foo/bar-0.1.0/package_foo-bar-0.1.0.tar.gz#md5=ce310afa2f5ade4af3b216fd1ece0498 (from https://pypi.example.com/repository/pypi-all/simple/package-foo/), version: bar-0.1.0
Given no hashes to check 0 links for project 'package-foo': discarding no candidates
ERROR: Could not find a version that satisfies the requirement package_foo (from versions: bar-0.1.0)
Cleaning up...
Removed build tracker '/private/var/folders/mv/0frvv9jj44d68kzfvgw72wvc0000gn/T/pip-req-tracker-p4ppfxwu'
ERROR: No matching distribution found for package_foo
Exception information:
Traceback (most recent call last):
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 153, in _main
    status = self.run(options, args)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 382, in run
    resolver.resolve(requirement_set)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/legacy_resolve.py", line 201, in resolve
    self._resolve_one(requirement_set, req)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/legacy_resolve.py", line 365, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/legacy_resolve.py", line 311, in _get_abstract_dist_for
    req.populate_link(self.finder, upgrade_allowed, self.require_hashes)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/req/req_install.py", line 225, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/Users/yzT/Desktop/venv/lib/python3.7/site-packages/pip/_internal/index.py", line 906, in find_requirement
    'No matching distribution found for %s' % req
pip._internal.exceptions.DistributionNotFound: No matching distribution found for package_foo

1 Ответ

2 голосов
/ 30 октября 2019

Ваше имя / номер версии не PEP440 . Следовательно, pip рассматривает его как предварительную версию и не устанавливает ее «по умолчанию».

Добавление спецификатора требования (как ==bar-0.1.0) или использование --preопция (pip install --pre package_foo) должна исправить вашу проблему.

Я бы порекомендовал изменить схему управления версиями, чтобы она соответствовала PEP440 и / или SemVer .

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