NewConnectionError при установке scipy - PullRequest
0 голосов
/ 25 февраля 2020

Python версия: 3.5.6
Платформа: Xilinx Ultrascale +

Я пытаюсь установить scipy на встроенное устройство Linux, которое у меня есть. Я успешно установил numpy, matplotlib и urllib3 с помощью следующей команды.

python3 -m pip install matplotlib --user --proxy <company proxy> --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org

Но когда я пытаюсь установить scipy, я получаю следующее:

Collecting scipy
  Downloading https://files.pythonhosted.org/packages/04/ab/e2eb3e3f90b9363040a3d885ccc5c79fe20c5b8a3caa8fe3bf47ff653260/scipy-1.4.1.tar.gz (24.6MB)
    100% |################################| 24.6MB 18.5MB/s
  Installing build dependencies ... error
  Complete output from command /usr/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-1anmecmf --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -- wheel setuptools Cython>=0.29.13 "numpy==1.13.3; python_version=='3.5' and platform_system!='AIX'" "numpy==1.13.3; python_version=='3.6' and platform_system!='AIX'" "numpy==1.14.5; python_version=='3.7' and platform_system!='AIX'" "numpy==1.17.3; python_version>='3.8' and platform_system!='AIX'" "numpy==1.16.0; python_version=='3.5' and platform_system=='AIX'" "numpy==1.16.0; python_version=='3.6' and platform_system=='AIX'" "numpy==1.16.0; python_version=='3.7' and platform_system=='AIX'" "numpy==1.17.3; python_version>='3.8' and platform_system=='AIX'" pybind11>=2.4.0:
  Ignoring numpy: markers 'python_version == "3.6" and platform_system != "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version == "3.7" and platform_system != "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version >= "3.8" and platform_system != "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version == "3.5" and platform_system == "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version == "3.6" and platform_system == "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version == "3.7" and platform_system == "AIX"' don't match your environment
  Ignoring numpy: markers 'python_version >= "3.8" and platform_system == "AIX"' don't match your environment
  Collecting wheel
    Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9e76c160>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/wheel/
    Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9e76c550>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/wheel/
    Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9e76c8d0>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/wheel/
    Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9e76c278>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/wheel/
    Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.VerifiedHTTPSConnection object at 0x7f9e76c4e0>: Failed to establish a new connection: [Errno 101] Network is unreachable',)': /simple/wheel/
    Could not find a version that satisfies the requirement wheel (from versions: )
  No matching distribution found for wheel

  ----------------------------------------
Command "/usr/bin/python3 -m pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-1anmecmf --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -- wheel setuptools Cython>=0.29.13 "numpy==1.13.3; python_version=='3.5' and platform_system!='AIX'" "numpy==1.13.3; python_version=='3.6' and platform_system!='AIX'" "numpy==1.14.5; python_version=='3.7' and platform_system!='AIX'" "numpy==1.17.3; python_version>='3.8' and platform_system!='AIX'" "numpy==1.16.0; python_version=='3.5' and platform_system=='AIX'" "numpy==1.16.0; python_version=='3.6' and platform_system=='AIX'" "numpy==1.16.0; python_version=='3.7' and platform_system=='AIX'" "numpy==1.17.3; python_version>='3.8' and platform_system=='AIX'" pybind11>=2.4.0" failed with error code 1 in None

I пытаюсь выяснить, что является причиной ошибки NewConnectionError. Я думаю, что он пытается загрузить больше файлов с сайта, которого еще нет в списке --trusted-host. Это правильно, и если да, то на какой сайт он пытается go?

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

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

Источник проблемы заключается в том, что что-то пыталось загрузить без прохождения через прокси-сервер компании, указанный в оригинале pip команда. Сначала я думал, что это в скрипте SciPy setup.py. Сопровождающие SciPy отодвинули назад, когда я отметил проблему и сказал, что проблема в пипсах. Оказывается, они были правы. Я процитирую их здесь:

rgommers:

Происходит то, что pip видит, что SciPy имеет файл pyproject.toml, который содержит зависимости сборки, который он затем пытается загрузить. Так что это либо ошибка в пипсах, не относящаяся к прокси (скорее всего, здесь), либо это что-то в вашей конфигурации прокси. Это не происходит в нашем файле setup.py.

Зависимость, которую пытался загрузить pip, была "wheel". В приведенном выше примере это даже говорит:

Collecting wheel

Но с этим именем пакета я не узнал, что происходит. Я думал, что это означало, что он пытался загрузить колесо SciPy из другого места.

Мне удалось решить мою проблему, установив колесо отдельно:

python3 -m pip install wheel --user --proxy <company proxy> --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org

И затем установить SciPy.

Версия пипа у меня 18.0. Не знаю, исправлено ли это в последней версии.

0 голосов
/ 26 февраля 2020

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

Когда вы просматриваете файл setup.py для scipy-1.4.1.tar.gz, вы убедитесь, что он передает URL загрузки, указывающие на GitHub, в numpy .distutils.core.setup. Я думаю, что процедуры установки пытаются увидеть, есть ли колесо на GitHub. Обратите внимание, что ошибки подключения происходят после того, как написано «Сбор колеса». Он никогда не сможет связаться с GitHub, если не использует прокси-сервер компании. Но я не вижу способа передать этот прокси-адрес из pip в код установки scipy. И поэтому все глохнет.

В принципе, если на pypi.org нет колеса, чего нет в моем случае (linux на ARM), то мне, кажется, не повезло. Компиляция моего собственного колеса с нуля выглядит единственной возможностью.

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