Pip: ImportError: невозможно импортировать имя «SourceDistribution» из «pip._internal.distributions.source»

Созданный на 15 окт. 2019  ·  101Комментарии  ·  Источник: pypa/pip

Окружающая обстановка

CircleCI с использованием Conda, например https://circleci.com/gh/peterjc/thapbi-pict/1073

  • версия pip: pip-19.2.3 (из conda) обновлена ​​до 19.3 (через pip install --upgrade pip setuptools )
  • Версия Python: Python-3.7.3
  • ОС: Linux

Я внес лишь незначительные изменения в свой код, но сегодня сборки CircleCI сломались на этапе сборки/установки моего инструмента Python — затронуто несколько веток. Время соответствует выпуску пункта 19.3 на PyPI.

Описание

Похоже, что в недавнем выпуске pip были перемещены некоторые внутренние файлы, я думаю, это # ​​6830.

Ожидаемое поведение

Как воспроизвести

Полный вывод на https://circleci.com/gh/peterjc/thapbi-pict/1073, который работает https://github.com/peterjc/thapbi-pict/blob/9fcec2da60e6e6ae5cf7ee6ad4b53dcc3a40cfe7/.circleci/config.yml#L56

...
python setup.py sdist --formats=gztar
python setup.py bdist_wheel
pip install dist/thapbi_pict-*.whl

Вывод

Traceback (most recent call last):
  File "/opt/conda/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/opt/conda/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
Exited with code 1
auto-locked support

Самый полезный комментарий

Спасибо @PabloCastellano! Сейчас я просто игнорирую комментарии, так как не хочу, чтобы мой сердечный ритм повышался. :)

Сделал релиз с исправлением ошибок. Если это помогло, используйте 👍 на этом посте. В противном случае напишите комментарий с сообщением об ошибке.

Все 101 Комментарий

Было бы очень полезно узнать, что в настройке CircleCI (или conda?) использует эти внутренние API - реорганизация не должна была повлиять на какой-либо внешний код. Основная проблема, о которой мы знаем до сих пор, — это реорганизация main, которая влияет на скрипты-оболочки, но эта проблема выглядит немного иначе. Любое понимание, которое вы можете дать, было бы очень полезно, спасибо.

Подтверждено, что удаление pip install --upgrade pip setuptools фиксированных вещей,

https://github.com/peterjc/thapbi-pict/commit/4060404c1034a676439aef1369260022577a6627
https://circleci.com/gh/peterjc/thapbi-pict/1074

т.е. что-то сломалось в том, как я обновился с pip 19.2.3 до 19.3

Я не намеренно использую Python, предоставленный CircleCI, а Python, предоставленный Conda. Есть ли смысл переключаться с pip ... на python -m pip ... только для того, чтобы исключить возможность того, что это связано с смешиванием Python?

Сейчас работаю над веткой, добавил немного больше логов и вернулся к сломанной версии:

https://circleci.com/gh/peterjc/thapbi-pict/1076

Это подтверждает, что трассировка запускается pip install dist/thapbi_pict-*.whl (подстановочный знак для соответствия одному только что построенному колесу).

ОК, использование python -m pip ... вместо pip ... не помогает:

https://circleci.com/gh/peterjc/thapbi-pict/1077
https://github.com/peterjc/thapbi-pict/commit/c168fbb7b61b2670bfb73dfb7ea87605fd17bfaf

Что бы это ни стоило, я только что подтвердил, что from pip._internal import main работает при простом обновлении pip (в Windows, так что не очень хорошее сравнение, но тем не менее...). Поэтому я подозреваю, что в вашей среде есть что-

У CircleCI есть возможность повторно запустить задание с SSH-доступом к виртуальной машине (не то, чтобы я когда-либо его использовал), поэтому теоретически это можно использовать для отладки, но я действительно не знаю, с чего начать.

На данный момент у меня есть обходной путь, и в какой-то момент conda-forge также будет упакован pip 19.3, поэтому, если другие люди не увидят такое же исключение, это кажется низким приоритетом?

Окей круто. Если у вас есть обходной путь, то я пока оставлю его там. Если другие добавят комментарии о том, что это происходит где-то еще, тогда мы сможем еще немного покопаться — возможно, у них будет дополнительная информация, которая поможет.

Я столкнулся с аналогичной проблемой в macOS, python: 3.6.9. Команда pip на моем терминале больше не работает. Какие-либо предложения?

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py

Это помогло на данный момент

У меня такая же проблема с CircleCI 1 час назад.
Изменение версии образа докера с python:3.7 на python:3.7.4 устраняет эту проблему. (просто обходной путь). нравится:

version: 2
...
jobs:
  build:
    docker:
      - image: python:3.7.4
...

Кто-нибудь из вас пользуется кэшированием? Я думаю, что возможно некоторые внутренние элементы пипса изменились, и когда вы восстанавливаете кеш старой версии питона, пипс ломается. Предложите вам аннулировать кэши CI вашего круга, изменив keys и посмотреть, что произойдет... (сработало для меня!)

Как предложил @bgkelly, очистка кеша также сработала для меня!

Да, то же самое и для меня — изменение ключа кеша решило эту проблему для проектов нашей команды на Circleci. Спасибо @bgkelly

Смена ключа кеша мне не помогла.
Добавление комментария в requirements.txt помогло, но это нежелательное решение.

Итак, это похоже на проблему с кэшированием для CircleCI.

Может ли кто-нибудь связаться с людьми из CircleCI (через их каналы поддержки)? Было бы здорово, если бы они могли изучить это и, возможно, перезвонить здесь.

Эй, люди,

Я действительно не знаю, поможет ли это вам каким-либо образом, но я получил то же сообщение об ошибке при установке MSYS, пытаясь установить WeasyPrint.

После удаления python3-pip и python3-setuptools я удалил все папки pip в /usr/lib/python3.7/site-packages/ и переустановил обе... решил эту конкретную ошибку.

pacman -R python3-pip python3-setuptools
rm -R /usr/lib/python3.7/site-packages/pip
rm -R /usr/lib/python3.7/site-packages/pip-19.3.1.dist-info
pacman -S python3-pip python3-setuptools

Честно говоря, теперь я столкнулся с проблемами компилятора... но, возможно, я мог бы помочь....

На всякий случай это может помочь, я столкнулся с ошибкой в ​​другом контексте: при копировании виртуальной среды из одного образа докера в другой в многоэтапной настройке.

Исходный образ содержит менее новую версию pip тогда как целевой образ содержит обновленную версию pip . После копирования каталога виртуальной среды исходного образа в целевой образ есть 2 разных каталога ( pip-<version>.dist-info ) в виртуальной среде site-packages и pip не работает, что дает та же ошибка, что и в этом выпуске.

Я не тратил время на устранение проблемы, так как несколько скептически отношусь к такому подходу, включающему копирование виртуальной среды в среду, где уже установлены пакеты.

В любом случае, это похоже на проблему коллизии пакетов.

Надеюсь это поможет! :улыбка:

Привет
Я полагаю, что мы видим ту же проблему на нашем внутреннем сервере ReadTheDocs. Он запускает следующую команду при построении документа:

var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip

Если я очищаю кеш сборки через графический интерфейс ReadTheDocs, сборка завершается успешно, но только до следующего запуска сборки.

Вот полный журнал:

Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/__main__.py", line 16, in <module>
    from pip._internal import main as _main  # isort:skip # noqa
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/__init__.py", line 40, in <module>
    from pip._internal.cli.autocompletion import autocomplete
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/autocompletion.py", line 8, in <module>
    from pip._internal.cli.main_parser import create_main_parser
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/cli/main_parser.py", line 11, in <module>
    from pip._internal.commands import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 9, in <module>
    from pip._internal.commands.download import DownloadCommand
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/commands/download.py", line 10, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 9, in <module>
    from pip._internal.distributions import (
  File "/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

Привет,

Я тоже столкнулся с проблемой.

ОС: Debian GNU/Linux 10 (Linux 4.19.0-6-amd64)
пункт: 19.3.1
конда: 4.7.12
Питон: 3.7.4

$ пункт
Traceback (последний последний вызов):
Файл "/home/jiang/anaconda3/bin/pip", строка 7, в
из pip._internal импортировать основной
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/__init__.py", строка 40, в
из pip._internal.cli.autocompletion импортировать автозаполнение
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/autocompletion.py", строка 8, в
из pip._internal.cli.main_parser импортировать create_main_parser
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/cli/main_parser.py", строка 11, в
из импорта pip._internal.commands (
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", строка 9, в
из pip._internal.commands.download import DownloadCommand
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/commands/download.py", строка 10, в
из pip._internal.operations.prepare импортировать RequirementPreparer
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", строка 9, в
из импорта pip._internal.distributions (
Файл "/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", строка 1, в
из pip._internal.distributions.source импортировать SourceDistribution
ImportError: невозможно импортировать имя «SourceDistribution» из «pip._internal.distributions.source» (/home/jiang/anaconda3/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Мы смогли обойти проблему на нашем локальном сервере ReadTheDocs, изменив поток сборки, чтобы специально использовать pip версии 19.2.3. Теперь ReadTheDocs запускает следующую команду сборки, и у нас больше нет проблем с кэшированием:

/var/lib/readthedocs/repo/user_builds/some_doc/envs/latest/bin/python -m pip install --upgrade --cache-dir /var/lib/readthedocs/repo/user_builds/some_doc/.cache/pip pip==19.2.3

Более конкретно, мы обновили локальный файл python_environment.py использовать конкретную версию пипа: https://github.com/readthedocs/readthedocs.org/blob/7212d6ff738b24a10fb0f4227d3fbdf69e5cab42/readthedocs/doc_builder/python_environments.py#L322

cmd = pip_install_cmd + ['pip']

изменился на:

cmd = pip_install_cmd + ['pip==19.2.3']

Я знаю, что мои настройки могут отличаться от большинства, но проблема с моей стороны была связана с каталогом PIP sources/ в виртуальной среде (скорее всего, проблемы с кэшированием PIP или что-то в этом роде). Позволь мне объяснить:
При удалении каталога user_builds/project/envs/ для проекта и перестроении он работает, но только до тех пор, пока вы снова не перестроите каталог envs/ . Я потратил массу времени на отладку проблемы, и оказалось, что проблемы вызывал каталог user_builds/project/envs/ (или что-то внутри). Поэтому я провел дополнительное тестирование, чтобы выяснить, что именно каталог user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ вызывает проблемы. Я удалил каталог user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ , пересобрал, и все было в порядке. Я снова перестроился, и это не удалось. Я снова проверил каталог user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/ и увидел, что там присутствует source/ . Итак, я перешел к своей глобальной установке Python и переместил каталог /path/to/lib/python3.6/dist-packages/pip/_internal/distributions/source/ из PIP, удалил каталог user_builds/project/envs/latest/lib/python3.6/site-packages/pip/_internal/distributions/source/ из среды проекта и пересобрал. Это построено успешно и не скопировало папку source/ , отлично. Так что теперь каждый раз, когда документы собираются, они строятся без ошибок. Я надеюсь, что это поможет кому-то другому.

Ваше здоровье.

Попробуй это:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

@Гуру36

Пробовал это много-много раз, но безуспешно. В любом случае, вы должны сделать это в начале, так что это не поможет. Все равно спасибо.

Ваше здоровье.

Попробуй это:

1.curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
2.python get-pip.py

Спасибо

Теперь у меня проблемы с этим в выпуске 0.20.

Глядя на это сейчас люди. Если бы кто-то мог предоставить инструкции о том, как воспроизвести с помощью pip 20.0, это было бы здорово!

Я сталкиваюсь с той же проблемой:

virtualenv venv
. venv/bin/activate
pip install sqlalchemy pymysql

приводит к

Traceback (most recent call last):
  File "/tmp/test/venv/bin/pip", line 11, in <module>
    sys.exit(main())
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/tmp/test/venv/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/tmp/test/venv/lib/python3.8/site-packages/pip/_internal/distributions/source/__init__.py)

Если бы кто-то мог предоставить инструкции по воспроизведению с помощью pip 20.0,

Короче говоря, «попробуйте использовать pip»! Результаты попытки установить scipy на работающую виртуальную среду, в которой уже установлен scipy (т.е. я ожидаю, что pip ничего не сделает):

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install pip==20.0
Looking in indexes: https://pypi.org/simple, http://phabricator.jbarisk.com:8080
Collecting pip==20.0
  Downloading https://files.pythonhosted.org/packages/60/65/16487a7c4e0f95bb3fc89c2e377be331fd496b7a9b08fd3077de7f3ae2cf/pip-20.0-py2.py3-none-any.whl (1.5MB)
     |████████████████████████████████| 1.5MB 1.7MB/s
Installing collected packages: pip
  Found existing installation: pip 19.3.1
    Uninstalling pip-19.3.1:
      Successfully uninstalled pip-19.3.1
pipSuccessfully installed pip-20.0

(farmcat3) [danielevans@rml-dev06 farmcat]$ pip install scipy
Traceback (most recent call last):
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/bin/pip", line 8, in <module>
    sys.exit(main())
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib64/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/jbanorthwest.co.uk/danielevans/venvs/farmcat3/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution'

Уловка с curl get-pip.py у меня не сработала, но я решил поискать различия между моим venv и «официальным кодом», установленным в системе. (Я на кластере, _so hic sunt leones_...)

--- /usr/lib/python2.7/site-packages/pip/_internal/distributions/__init__.py 28.10.2019 08:47:20.727522000 +0100
+++ /home/dummyuser/ml/lib/python3.6/site-packages/pip/_internal/distributions/__init__.py 21 января 2020 г. 12:55:48.000000000 +0100
@@ -1,4 +1,4 @@
-from pip._internal.distributions.source.legacy import SourceDistribution
+из pip._internal.distributions.source import SourceDistribution
из pip._internal.distributions.wheel импортировать WheelDistribution
из pip._internal.utils.typing import MYPY_CHECK_RUNNING

В моей ситуации помог переход на python -m pip . Из https://github.com/ome/jenkins-library-recursivemerge/pull/4/files

Не удается:

    (cd build && curl -sfL ${buildInfraUrl} | tar -zxf -)
    virtualenv build/venv && build/venv/bin/pip install ${sccPackage}

Проходит:

    python -m venv build/venv
    . build/venv/bin/activate
    python -m pip install ${sccPackage}

@pradiunsg , в Fedora 29 я могу воспроизвести вот так:

rm -rf ~/.local/lib/python3.7
sudo dnf install python3-pip
pip3.7 install -U --user pip
python3.7 -m pip install requests

```
Traceback (последний последний вызов):
Файл "/usr/lib64/python3.7/runpy.py", строка 193, в _run_module_as_main
"__main__", mod_spec)
Файл "/usr/lib64/python3.7/runpy.py", строка 85, в _run_code
exec(код, run_globals)
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/__main__.py", строка 19, в
sys.exit(_main())
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/main.py", строка 73, в основном
command = create_command(cmd_name, изолированный=("--isolated" в cmd_args))
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", строка 96, в create_command
модуль = importlib.import_module (модуль_путь)
Файл "/usr/lib64/python3.7/importlib/__init__.py", строка 127, в import_module
вернуть _bootstrap._gcd_import (имя [уровень:], пакет, уровень)
Файл "", строка 1006, в _gcd_import
Файл "", строка 983, в _find_and_load
Файл "", строка 967, в _find_and_load_unlocked
Файл "", строка 677, в _load_unlocked
Файл "", строка 728, в exec_module
Файл "", строка 219, в _call_with_frames_removed
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/commands/install.py", строка 24, в
из pip._internal.cli.req_command импортировать RequirementCommand
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", строка 20, в
из pip._internal.operations.prepare импортировать RequirementPreparer
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", строка 16, в
из импорта pip._internal.distributions (
Файл "/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", строка 1, в
из pip._internal.distributions.source импортировать SourceDistribution
ImportError: невозможно импортировать имя «SourceDistribution» из «pip._internal.distributions.source» (/home/kaiant/.local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)


Я только что получил это, когда мое развертывание автоматически обновило пипс с 19.3.1 до 20.0.

Все уже использует python -m pip - здесь проблема не в этом

Могу сказать, что фикс от JediKev, то есть удалить эту папку:

сайт-пакеты/пип/_внутренний/распределения/источник

исправил проблему

Также затронут простой контекст Python Docker, использующий контейнер python:3.7-slim (на основе Debian):

[32;1m$ docker build --compress -t $REGISTRY_IMAGE_SPARROW .[0;m
#2 [internal] load .dockerignore
#2 transferring context: 493B done
#2 DONE 0.0s

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 1.22kB done
#1 DONE 0.0s

#3 [internal] load metadata for docker.io/library/python:3.7-slim
#3 DONE 0.8s

#4 [base 1/6] FROM docker.io/library/python:3.7-slim<strong i="7">@sha256</strong>:5886bc9424f2edc...
#4 DONE 0.0s

#5 [internal] load build context
#5 transferring context: 531.72kB 0.0s done
#5 DONE 0.0s

#10 [base 6/6] RUN pip install --upgrade pip
#10 CACHED

#8 [base 4/6] RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards co...
#8 CACHED

#9 [base 5/6] WORKDIR /app
#9 CACHED

#6 [base 2/6] COPY docker-entrypoint.sh /usr/local/bin/
#6 CACHED

#7 [base 3/6] RUN chmod +x /usr/local/bin/docker-entrypoint.sh
#7 CACHED

#11 [requirements 1/2] COPY requirements.txt requirements.txt
#11 CACHED

#12 [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt
#12 0.912 Traceback (most recent call last):
#12 0.912   File "/usr/local/bin/pip", line 8, in <module>
#12 0.912     sys.exit(main())
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
#12 0.912     command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
#12 0.912   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
#12 0.912     module = importlib.import_module(module_path)
#12 0.912   File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
#12 0.912     return _bootstrap._gcd_import(name[level:], package, level)
#12 0.912   File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
#12 0.912   File "<frozen importlib._bootstrap>", line 983, in _find_and_load
#12 0.912   File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
#12 0.912   File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
#12 0.913   File "<frozen importlib._bootstrap_external>", line 728, in exec_module
#12 0.913   File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
#12 0.913     from pip._internal.cli.req_command import RequirementCommand
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
#12 0.913     from pip._internal.operations.prepare import RequirementPreparer
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
#12 0.913     from pip._internal.distributions import (
#12 0.913   File "/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
#12 0.913     from pip._internal.distributions.source import SourceDistribution
#12 0.913 ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/usr/local/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)
#12 ERROR: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully
------
 > [requirements 2/2] RUN pip install --no-cache-dir -r requirements.txt:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: executor failed running [/bin/sh -c pip install --no-cache-dir -r requirements.txt]: runc did not terminate sucessfully

Получил то же самое в python:3.7.6-alpine работающем на действиях github.

Я могу воспроизвести эту ошибку в Dockerfile :

FROM python:3.7

COPY requirements.txt .

RUN pip install --upgrade pip
RUN pip install -r requirements.txt

CMD pip --version

И в requirements.txst :


Когда я создаю этот образ, я получаю эту неприятную ошибку. Если я удалю строку, которая обновляет pip, образ будет создан.

Хорошо, я воспроизвел это локально — скоро я отправлю PR с исправлением.

Удаление папки ./site-packages/pip/_internal/distributions/source помогает!

Да, pip версии 20.0 ломается

Да, здесь та же проблема (пипс 20.0).

Да, pip 20.0 ломается, используя «virtualenv». команда для создания venv

То же самое здесь, все наши сборки CI, которые обновляют pip, терпят неудачу.

Все сборки сломаны из-за той же ошибки и с нашей стороны.

Сборки сломались

Что если я вернусь к пункту 19.x? Будет ли это работать?

РЕДАКТИРОВАТЬ:
pip install --upgrade "pip==19.3.1" все еще работает.

То же самое здесь с python 3.7.3 и pip 20.0

pip install pip"<20.0" временное решение, но оно работает.

возможно, можно создать virtualenv установив версию pip на 19.3.1 (предыдущую)

Быстрое исправление, которое работает

завиток https://bootstrap.pypa.io/get-pip.py -o get-pip.pyPython get-pip.py pip==9.0.2

Сохранен наш пайплайн CI

Read The Docs также страдает от этой проблемы, из-за чего создание документов постоянно терпит неудачу.
373AED13-5DF1-4729-9923-114F83603B44

возможно, можно создать виртуальную версию pip, установив версию 19.3.1 (предыдущая)

@manutero , --no-download команды virtualenv позволит избежать попыток загрузить последнюю версию pip во время создания среды.

Если вы используете virtualenv, просто перейдите на 19.x. Это решило проблему в моем virtualenv:

virtualenv --no-pip <ENV NAME>
# activate the virtual environment
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py pip==19.2.2

Пришлось выбрать предыдущую версию, чтобы разобраться,
завиток https://bootstrap.pypa.io/get-pip.py -o get-pip.py
питон get-pip.py пип = 19.3.1

То же самое здесь с python 3.7.6 и pip 20.0

версия пипа-20.0
версия питона - 3.6
Просто напишите ниже строки в файле
/lib/python3.6/site-packages/pip/_internal/distributions/source/__init__.py

из .legacy импорта SourceDistribution

Могут ли другие, увидев эту ошибку, подтвердить, что в pip/_internal/distributions есть источник/папка?

Если вы можете подтвердить, что папка существует, не комментируйте здесь — используйте реакцию 👍 на этот пост. Такой папки не существует, используйте реакцию 👎.

такая же проблема здесь с Ubuntu 19.04

Successfully installed pip-20.0
Traceback (most recent call last):
  File "/home/pippo/.venvs/test_pgm/bin/pip", line 10, in <module>
    sys.exit(main())
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/main.py", line 73, in main
    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/__init__.py", line 96, in create_command
    module = importlib.import_module(module_path)
  File "/usr/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 24, in <module>
    from pip._internal.cli.req_command import RequirementCommand
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 20, in <module>
    from pip._internal.operations.prepare import RequirementPreparer
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/operations/prepare.py", line 16, in <module>
    from pip._internal.distributions import (
  File "/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/__init__.py", line 1, in <module>
    from pip._internal.distributions.source import SourceDistribution
ImportError: cannot import name 'SourceDistribution' from 'pip._internal.distributions.source' (/home/pippo/.venvs/test_pgm/lib/python3.7/site-packages/pip/_internal/distributions/source/__init__.py)

Он не отображается с pip == 19.2.3, поэтому на данный момент я вернул его.

Пожалуйста, перестаньте сообщать «я тоже». @pradyunsg работает над исправлением прямо сейчас

Ага. удар по этому сейчас работал вчера.

фрагмент для пользователей pipenv

wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py
pipenv run python get-pip.py pip==19.3

Для быстрого исправления,

$(which easy_install) pip==19.3

также работает нормально

Для быстрого исправления,

$(which easy_install) pip==19.3

также работает нормально

Из всех временных обходных путей у меня сработал только этот

Интересно, что произойдет, когда они удалят easy_install... :) - Как тогда мы будем исправлять проблемы с пипами?

Здесь работает замена pip install --upgrade pip на pip install --upgrade pip"<20.0" .

Пришлось выбрать предыдущую версию, чтобы разобраться,
завиток https://bootstrap.pypa.io/get-pip.py -o get-pip.py
питон get-pip.py пип = 19.3.1

Это должно быть python3 get-pip.py pip==19.3.1

Здесь работает замена pip install --upgrade pip на pip install --upgrade pip"<20.0" .

Помогите мне в докере
ЗАПУСК pip install --upgrade pip"<20.0"

Спасибо @PabloCastellano! Сейчас я просто игнорирую комментарии, так как не хочу, чтобы мой сердечный ритм повышался. :)

Сделал релиз с исправлением ошибок. Если это помогло, используйте 👍 на этом посте. В противном случае напишите комментарий с сообщением об ошибке.

XD

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

@pradyunsg Ты только что опустил мою. Кажется, работает.

@СергейЛадутко :

Здесь работает замена pip install --upgrade pip на pip install --upgrade pip"<20.0" .

Помогите мне в докере
ЗАПУСК pip install --upgrade pip"<20.0"

попробуй pip install --upgrade pip==19.3.1

хорошо, позвольте мне снова запустить мою сборку

@pradiunsg Снимаю шляпу перед быстрым исправлением, мы очень ценим его <3 Я могу подтвердить, что это исправление прижилось в рабочих местах CircleCI, для всех, кто интересуется.

Обратите внимание, что get-pip.py еще не был обновлен — это потому, что при тестировании я использовал собственную среду разработки для get-pip. :)

Я обновлю это в ближайшие несколько минут.

Могу подтвердить. pip==20.0.1 работает нормально

@pradyunsg какие-либо улучшения CI, чтобы этого не произошло в будущем? Докер-контейнера будет достаточно. Вы бы приняли PR для этого?

Обратите внимание, что get-pip.py еще не был обновлен — это потому, что при тестировании я использовал собственную среду разработки для get-pip. :)

Я обновлю это в ближайшие несколько минут.

:) дайте нам знать, когда это будет хорошо идти

Я обновлю это в ближайшие несколько минут.

Хорошо, нажал это сейчас. К настоящему времени изменение должно было распространиться на bootstrap.pypa.io. Или действительно скоро.

Наша сборка теперь прошла с помощью get-pip.py, спасибо @pradyunsg

Пип 20.0.1 работает нормально. Спасибо @pradyunsg

Я могу подтвердить, что теперь устанавливается новый pip который больше не страдает от этой ошибки. Спасибо @pradyunsg !

Спасибо @pradyunsg !!

спасибо @pradyunsg ! очень, очень много

спасибо @pradyunsg за быстрое исправление! 🎉

Спасибо @pradyunsg за быстрый результат!

Я думаю, проблема была создана из-за того, что есть каталог модуля source а также source.py в пути pip/_internal/distributions и это портит импорт.

В pip/_internal/distributions/__init__.py есть строка импорта:

from pip._internal.distributions.source import SourceDistribution # <-- here
from pip._internal.distributions.wheel import WheelDistribution
from pip._internal.utils.typing import MYPY_CHECK_RUNNING

Но есть также каталог source с __init__.py внутри,

  env  ~/.../_internal/distributions  ls -ltr
total 32
-rw-r--r-- 1 user xxx 1294 Jan 21 18:02 wheel.py
-rw-r--r-- 1 user xxx  760 Jan 21 18:02 installed.py
-rw-r--r-- 1 user xxx 1425 Jan 21 18:02 base.py
drwxr-xr-x 3 user xxx 4096 Jan 21 18:02 source
-rw-r--r-- 1 user xxx 4201 Jan 21 18:19 source.py
-rw-r--r-- 1 user xxx  961 Jan 21 18:26 __init__.py
drwxr-xr-x 2 user xxx 4096 Jan 21 18:26 __pycache__

Следовательно, этот импорт не удастся. Переименование source.py в _source.py и изменение импорта в __init__.py на from pip._internal.distributions._source import SourceDistribution кажется, исправляет это.

@pradyunsg Снимаю шляпу за быстрое исправление, мы очень ценим это <3

Согласитесь, фантастический поворот в исправлении здесь!

Спасибо @pradyunsg

Та же ошибка, что и выше.
Версия Python: Python-3.7.6
ОС: Windows

Работает после перехода на PIP 19.3.1

Теперь отлично работает, спасибо.

Учитывая характер этой ошибки, не могли бы вы удалить версию 20.0 из PYPA? https://pypi.org/project/pip/#история

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

Извините всех за поломку, и спасибо, что работали с нами здесь, чтобы исправить эту поломку!

@xavfernandez выяснил, почему это произошло, и мы будем вносить изменения в процесс выпуска, чтобы предотвратить подобные сбои в будущем: #7624

отличная работа, спасибо за молниеносное выполнение!

Привет, я застрял в 20.0
Все команды, которые я пробовал, возвращают эту ошибку о «SourceDistribution».

pip install --upgrade pip
pip install pip "<20.0"
pip install --upgrade "pip==19.3.1"

Я тоже устал удалять:

pip uninstall pip
python -m pip uninstall pip setuptools

У кого-нибудь есть другое решение для удаления pip?

Убунту 18.04.3 ЛТС
Питон 3.6.9
запустить в виртуалэнв

Привет @CharrierCoop! Вы сможете загрузить get-pip.py и установить pip 20.0.1, используя его.

См. https://pip.pypa.io/en/stable/installing/

Идеально !!
спасибо @pradyunsg

не могли бы вы удалить версию 20.0 из PYPA?

Нет. Мы не собираемся его удалять. У нас есть стандартная функция для "выдергивания" неработающих релизов. Как только PyPI добавит поддержку этого, мы удалим этот релиз (если к тому времени это кого-то волнует).

Подробнее см. https://www.python.org/dev/peps/pep-0592/#motivation .

sudo python get-pip.py pip==19.3.1"
исправить эту проблему

sudo python get-pip.py pip==19.3.1"
исправить эту проблему

большое спасибо

sudo python get-pip.py pip==19.3.1"
исправить эту проблему

Нет необходимости, эта проблема была исправлена ​​@pradiunsg.

Привет @CharrierCoop! Вы сможете загрузить get-pip.py и установить pip 20.0.1, используя его.

См. https://pip.pypa.io/en/stable/installing/

Я попытался сделать то же самое на Raspberry Pi 4 (Python 3.7.3, версия pip — 20.0 и ОС — Raspbian Buster Lite), но это не увенчалось успехом.
ОШИБКА: не удалось найти версию, удовлетворяющую требованию pi p
ОШИБКА: не найдено подходящее распределение для пункта

Любое решение?

@ Gilf641 Gilf641 Пожалуйста,

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

Если вы все еще сталкиваетесь с проблемами, найдите дубликаты, зарегистрированные ранее (начиная с 21 января, для пункта 20.0), и, если их нет, создайте новую проблему.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги