easy_install завершается с ошибкой «Не удалось найти скрипт установки» после двоичной загрузки? - PullRequest
11 голосов
/ 30 мая 2011

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

Что я делаю не так?

Ответы [ 3 ]

38 голосов
/ 03 февраля 2013

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

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

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

8 голосов
/ 04 июня 2011

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

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

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

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

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

1 голос
/ 19 сентября 2016

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

...