Остановка setup.py от установки как яйцо
Как остановить setup.py
от установки пакета в виде яйца? Или даже лучше, как мне easy_install
установить пакет как egg
?
sudo python setup.py install
Причина, заключающаяся в том, что PyDev
довольно придирчив к пакетам в формате egg
... В настоящий момент меня интересует пакет boto
.
Обновление: Я нашел способ грубой силы:
sudo easy_install -m boto
cd path/to/boto-xyz.egg
sudo mv boto ..
sudo rm -rf boto-xyz.egg
Ответы
Ответ 1
Я чувствую, что мне не хватает чего-то тонкого или важного (встреча с этой страницей спустя годы после того, как вопрос был задан и не нашел удовлетворительного ответа), однако следующее работает отлично для меня:
python setup.py install --single-version-externally-managed --root=/
Сжатые файлы *.egg
являются изобретением setuptools (я не большой поклонник их, хотя я понимаю, почему они были созданы), и потому что setup.py
script использует (и может потребовать) setuptools, пакет заканчивается установкой в качестве сжатого файла *.egg
.
Параметры командной строки выше аналогичны тем, которые используются при использовании pip (диспетчер пакетов Python), который намекает другим способом остановить установку пакета как сжатого *.egg
file: Просто используйте pip! Если у вас есть каталог, содержащий setup.py
script, вы можете запустить следующую команду в этом каталоге, чтобы установить пакет с помощью pip:
pip install .
Это улучшение над командой setup.py
выше, потому что оно отслеживает дополнительные метаданные (например, отслеживание установленных файлов позволяет более надежно удалить).
Ответ 2
Спустя годы эта же проблема, не удовлетворенная принятым ответом. Нашли это в группах Google:
pushd /path/to/my/package/
python setup.py sdist
popd
pip install /path/to/my/package/dist/package-1.0.tar.gz
Объяснение:
python setup.py sdist
создает распределение источника, которое, естественно, не является *.egg! Полученный в результате архив (.tar.gz в unix,.zip в windows) может быть установлен как любой удаленный модуль с pip. Он даже не требует дополнительных параметров! Это приводит к желаемому полностью просматриваемому модулю.