easy_install завершается ошибкой Не удалось найти сценарий установки после загрузки бинарного файла?

После загрузки бинарного дистрибутива моего расширения Python C с python setup.py bdist upload, easy_install [my-package-name] завершается сбоем из-за «ошибки: не удалось найти скрипт установки в /tmp/easy_install/package-name-etc-etc».

Что я делаю неправильно?


person Michael    schedule 30.05.2011    source источник


Ответы (3)


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

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

Это одна из многих ситуаций, в которых предоставленный вами аргумент командной строки может быть непреднамеренно затенен файлом или папкой с тем же именем. Другим примером является make: если вы запустите make test, пытаясь создать тестовую цель, и у вас есть папка с именем test, тогда make не будет делать то, что вы хотите. Решение в этом случае — указать фальшивые цели. .

person jarmod    schedule 03.02.2013
comment
Вам даже не нужно менять имя вашего каталога. Исправить это так же просто, как ввести cd .. и снова попробовать easy_install с другого cwd. Я бы порекомендовал проверить это, прежде чем смотреть на ответ Мартейна, потому что это простая ошибка. - person Jamey; 16.04.2013
comment
Вау, мне бы потребовалось некоторое время, чтобы понять это самостоятельно. Отличный ответ. - person JacobIRR; 09.05.2018

easy_install ожидает найти либо исходный дистрибутив, либо яйцо. Лучше всего загружать исходные дистрибутивы (sdist) на PyPI (или любой другой сервер распространения, который вы используете) и загружать яйца только в том случае, если ваш пакет python содержит расширения C, и только для яиц Windows (см. мой ответ на Могу ли я создать одно яйцо для нескольких версий python? ).

Команда bdist без дополнительной настройки создает архив .tar.gz или .zip, содержащий скомпилированные файлы Python (и любые скомпилированные расширения C) для вашей текущей платформы, без установщика (поэтому не включая файл setup.py). Он предназначен для распаковки вручную в месте расположения пакетов вашего сайта и предшествует распространению через яйца. Если вы разархивируете его, вы заметите, что он даже включает полный абсолютный путь к вашему каталогу site-packages в tar-архиве!

Вы можете настроить bdist для создания файла RPM или .deb или простого установщика Windows, но они опять же нацелены на предоставление установочных пакетов для других систем распространения, не связанных с PyPI и easy_install.

Итак, подводя итог, в большинстве случаев лучше загрузить исходный дистрибутив sdist, а easy_install выполнить компиляцию python (в яйцо) при установке.

Если вы хотите загрузить предварительно скомпилированный дистрибутив (который затем привязан к конкретной версии Python и платформе, для которой он был скомпилирован), используйте вместо этого команду bdist_egg.

person Martijn Pieters    schedule 04.06.2011

Иногда вы на самом деле не собираетесь устанавливать easy_install в «каталог», который будет искать файл setup.py. Проще говоря, вы можете делать easy_install xyz/, а на самом деле хотите easy_install xyz

person JoeyZhao    schedule 19.09.2016