Numpy: pip install на python 2.7 пытается установить numpy 1.17, в отличие от NEP 14

Созданный на 16 авг. 2019  ·  15Комментарии  ·  Источник: numpy/numpy

pip install numpy на python 2.7 пытается установить numpy 1.17, из-за чего поддержка python 2.7 упала. Это противоречит функциональности, описанной в NEP 14 , в котором говорится:

... pip install numpy на Python 2 будет продолжать предоставлять последнюю рабочую версию на неограниченный срок ...

Информация о версии Numpy / Python:

версия pip: 19.2.2
python: 2.7.15 | Anaconda, Inc. | (по умолчанию, 23 октября 2018 г., 18:31:10) n [GCC 7.3.0]

32 - Installation

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

настоящий вопрос в том, почему вы используете Python 2.7

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

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

Кажется, есть ошибка в программе pip или setuptools, которая вызывает это, можете ли вы попробовать обновить pip? (см. также gh-13911, который, как я полагаю, является дубликатом). Вероятно, вы можете обновить pip с помощью самого pip: python -m pip install --upgrade pip и python -m pip install --upgrade setuptools ?

настоящий вопрос в том, почему вы используете Python 2.7

настоящий вопрос в том, почему вы используете Python 2.7

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

Кажется, есть ошибка в программе pip или setuptools, которая вызывает это, можете ли вы попробовать обновить pip? (см. также gh-13911, который, как я полагаю, является дубликатом). Вероятно, вы можете обновить pip с помощью самого pip: python -m pip install --upgrade pip и python -m pip install --upgrade setuptools ?

Я использую последние версии обоих - pip 19.2.2 и setuptools 41.1.0.

настоящий вопрос в том, почему вы используете Python 2.7

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

Действительно есть. В моем случае я пытаюсь запустить академически разработанное программное обеспечение для научного анализа, которое не было перенесено на py3.

Но дело здесь не в том, следует ли мне использовать python 2.7, а в том, что numpy сделал формальное заявление об ожидаемой функциональности, а это не настоящая функциональность. В этом, на мой взгляд, ошибка.

Вчера я заметил, что pip не устанавливает pytest 5.0.1 для Python 2.7, потому что 2.7 не поддерживается, поэтому в некоторых случаях pip работает правильно. Интересно, есть ли где-нибудь информация, которую нужно обновить до версии 1.17?

Вы можете попробовать python2.7 -mpip чтобы убедиться, что pip знает, какая версия запущена. Также похоже, что вы используете Anaconda, что может вызвать затруднения при смешивании с pip.

Что показывает which pip ?

Хммм, на моей машине pip 18.1 и setuptools 41.0.1 работают нормально (как в двоичном, так и без двоичного режима). Обновление до 19.2.2 и 41.1.0 для меня ничего не меняет. Версия python - 2.7.16+ (debian).

Как отмечает Чак, я предполагаю, что вы используете python2.7 -mpip вместо pip чтобы быть уверенным, что у вас установлена ​​самая новая версия (в случае, если вы используете --user или другую версия pip по какой-то причине.)?

Было бы действительно хорошо понять, что именно вызывает это.

@IPetrik. Не могли бы вы собрать полностью воспроизводимый пример? Вы используете Anaconda, поэтому что-то вроде:

conda create -n py27-empty
conda activate py27-empty
conda install pip
# Some diagnostics
which pip
pip --version
conda list setuptools

pip install numpy

Я пробовал несколько вариантов этого, но не могу воспроизвести вашу проблему.

После попытки подготовить минимальный пример, я понял проблему: мы используем локальный кеш-сервер PyPI для devpi, который был в моем pip.conf как extra-index-url . Если я удалю это из своего pip.conf , все будет работать правильно ... ой.

Хм, похоже, Пип должен с этим справиться. Есть ли что-то особенное в кеш-памяти и pip.conf ? Я не знаком с этими вещами. @njsmith Есть идеи?

Интересно, правильно ли сервер devpi пересылает метаинформацию о доступных версиях для данного пакета.

Обнаружена одна причина, по которой новый pip может попытаться установить 1.17.0 для Python 2.7. Это происходит, когда пакет использует setup_requires='numpy' . Это потому, что это вызовет easy_install если в этом пакете не будет pyproject.toml (см. Https://github.com/pypa/pip/issues/6945#issuecomment-526479930).

Есть обходной путь: явно выполните pip install numpy перед pip install package-with-setup-requires .

И исправление: этот пакет должен добавить pyproject.toml , что устранит эту проблему в новом выпуске этого пакета.

Обнаружена одна причина, по которой новый pip может попытаться установить 1.17.0 для Python 2.7. Это происходит, когда пакет использует setup_requires='numpy' . Это потому, что это вызовет easy_install если этот пакет не имеет pyproject.toml (см. Pypa / pip # 6945 (комментарий) ).

Есть обходной путь: явно выполните pip install numpy перед pip install package-with-setup-requires .

Конкретный случай этого - pip install pycuda , который не работает так:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/tmp/pip-build-LYaxup/pycuda/setup.py", line 251, in <module>
    main()
  ...
  File "/usr/lib/python2.7/dist-packages/setuptools/sandbox.py", line 44, in _execfile
    code = compile(script, filename, 'exec')
  File "/tmp/easy_install-mp9NYd/numpy-1.19.0rc1/setup.py", line 182
    raise ValueError(f'Submodule {p} missing')
                                            ^
SyntaxError: invalid syntax

Как заметил @rgommers, обходной путь прост: сначала выполните pip install numpy==1.16.6 (для последней версии NumPy, совместимой с Python 2.7), а затем повторите попытку pip install pycuda .

Это ошибка pip , и, похоже, она очень серьезная. Я могу воспроизвести это с помощью пункта 20.1.1. pip-2.7 install numpy правильно устанавливает 1.16.6 , поэтому метаданные для numpy на PyPI верны. pip-2.7 install pycuda пытается установить последнюю версию numpy вместо 1.16.6 .

Скорее всего, об этом уже сообщалось, у меня нет времени разбираться в этом в ближайшие дни. @artob, если вы посмотрите, есть ли проблема с Pip для этого, и откройте ее в противном случае, это будет очень признательно.

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