Что означает «Не удалось построить колесо для X» при установке в пипсах? - PullRequest
0 голосов
/ 08 ноября 2018

Это действительно популярный вопрос здесь, в SO, но ни один из многих ответов, на которые я смотрел, четко объясняет, что на самом деле означает эта ошибка и почему она возникает.

Одним из источников путаницы является то, что когда (например) вы делаете pip install pycparser, вы сначала получаете ошибку:

Failed building wheel for pycparser

, за которым следует сообщение о том, что пакет был:

Successfully installed pycparser-2.19.


# pip3 install pycparser

Collecting pycparser
  Using cached https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz
Building wheels for collected packages: pycparser
  Running setup.py bdist_wheel for pycparser ... error
  Complete output from command /usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-g_v28hpp/pycparser/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-__w_f6p0 --python-tag cp36:
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    ...
    File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2349, in resolve
      module = __import__(self.module_name, fromlist=['__name__'], level=0)
  ModuleNotFoundError: No module named 'wheel.bdist_wheel'

  ----------------------------------------
  Failed building wheel for pycparser
  Running setup.py clean for pycparser
Failed to build pycparser
Installing collected packages: pycparser
  Running setup.py install for pycparser ... done
Successfully installed pycparser-2.19

Что здесь происходит?

(Я хотел бы понять, как что-то может произойти сбой, но все еще устанавливается, и можете ли вы доверять этому пакету, работающему правильно?)

Пока что лучшее частичное объяснение, которое я нашел, это это .


Кстати / Решение :

Решение вышеуказанной проблемы чаще всего заключается в том, чтобы отключить кэшированную копию с помощью: pip install <package> --no-cache-dir.

Ответы [ 4 ]

0 голосов
/ 09 июля 2019

С тех пор, кажется, никто не упомянул об этом отдельно. Мое собственное решение вышеуказанной проблемы чаще всего заключается в том, чтобы отключить кэшированную копию с помощью: pip install <package> --no-cache-dir.

0 голосов
/ 08 июня 2019

Может быть полезно решить этот вопрос с точки зрения развертывания пакета.

Существует множество учебных пособий, в которых объясняется, как опубликовать пакет в PyPi. Ниже пара, которую я использовал;

средний
настоящий питон

По моему опыту, в большинстве этих уроков вы используете только .tar источника, а не колесо. Таким образом, при установке пакетов, созданных с использованием этих руководств, я получил ошибку «Не удалось собрать колесо».

Позже я нашел ссылку на PyPi на документы Python Software Foundation PSF Docs . Я обнаружил, что процесс их настройки и сборки немного отличается и действительно включает в себя создание файла wheel.

После использования официально документированного метода я больше не получал сообщение об ошибке при установке своих пакетов.

Итак, ошибка может быть просто в том, как разработчик упаковал и развернул проект. Никто из нас не родился, зная, как использовать PyPi, и, если они столкнулись с неправильным руководством - ну, вы можете заполнить пробелы.

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

0 голосов
/ 08 июня 2019

(пиппер здесь!)

Если пакет не является колесом, pip пытается создать для него колесо (через setup.py bdist_wheel). Если по какой-либо причине это не удается, вы получаете сообщение «Не удалось создать колесо для pycparser», и pip возвращается к установке напрямую (через setup.py install).

Когда у нас есть колесо, Пип может установить колесо, распаковав его правильно. pip пытается устанавливать пакеты с помощью колес так часто, как это возможно. Это связано с различными преимуществами использования колес (например, более быстрая установка, возможность кэширования, повторное выполнение кода и т. Д.).


Ваше сообщение об ошибке здесь из-за отсутствия пакета wheel, который содержит логику, необходимую для сборки колес в setup.py bdist_wheel. (pip install wheel может это исправить.)


Выше приведено устаревшее поведение, которое в настоящее время используется по умолчанию; мы переключимся на PEP 517 по умолчанию, когда-нибудь в будущем, что приведет нас к стандартизированному процессу для этого. Для этого у нас также есть отдельные сборки, поэтому в этих средах по умолчанию будет установлено колесо. :)

0 голосов
/ 01 февраля 2019

Вчера я получил ту же ошибку: Failed building wheel for hddfancontrol при запуске pip3 install hddfancontrol. Результат был Failed to build hddfancontrol. Причиной было error: invalid command 'bdist_wheel' и Running setup.py bdist_wheel for hddfancontrol ... error. Ошибка была исправлена ​​с помощью следующего:

 pip3 install wheel

здесь .)

В качестве альтернативы, «колесо» можно загрузить прямо с здесь . После загрузки его можно установить, выполнив следующее:

pip3 install "/the/file_path/to/wheel-0.32.3-py2.py3-none-any.whl"
...