Есть ли существенная разница между
pip install -e /path/to/mypackage
а вариант setuptools?
python /path/to/mypackage/setup.py develop
Есть ли существенная разница между
pip install -e /path/to/mypackage
а вариант setuptools?
python /path/to/mypackage/setup.py develop
Ответы:
Старайтесь не звонить setup.py
напрямую, он не будет правильно сообщать pip, что вы установили свой пакет.
С pip install -e
:
Для локальных проектов каталог SomeProject.egg-info создается относительно пути проекта. Это одно преимущество по сравнению с простым использованием
setup.py develop
, которое создает «информацию о яйцах» непосредственно относительно текущего рабочего каталога.
Больше: документы
Также читайте Setuptools' документы .
Еще одно отличие: pip install -e
использует колесо, а
python setup.py develop
не использует его.
С помощью install
вы можете достичь того же поведения, используя
pip install -e /path/to/package --no-use-wheel
Подробнее о колесах: колеса питона
--no-use-wheel
в пользу--no-binary :all:
Еще одно отличие, которое может быть предпочтительным, pip install -e
заключается в том, что если ваш проект имеет зависимости в install_requires
in setup.py
, то pip install -e .
устанавливает зависимости с помощью pip, а python setup.py develop
может устанавливать с easy_install
и может вызвать проблемы re: 'egg-info', как упомянуто выше. При install-requires
использовании dependency_links
с пользовательскими URL-адресами git и с прикрепленными идентификаторами яиц это может быть особенно раздражающим.
pip install -e .
, он, по сути, создает символическую ссылку в соответствующем каталоге пакетов сайта Python, указывающую на вашу рабочую копию. Поскольку в эту рабочую копию вносятся изменения в код, она мгновенно отражается в «установленной» версии, поэтому вам не нужно повторно запускать команды установки по ходу работы. Это в первую очередь полезно для разработки в хранилище , которое представляет собой устанавливаемый пакет, но также может быть полезно, например , для написания некоторого набора модулей только с абсолютным импортом и т.д.
Еще одно отличие: когда вы работаете python setup.py develop
с версией, которая считается предварительной версией (возможно, потому что вы запускаете ее из git-клона, когда не проверили релиз), вы включите установку предварительных выпусков ваших зависимостей. , С другой стороны, с pip install --editable
вами придется пройти --pre
явно, если вы хотите эти предварительные релизы.
(См. Журнал CI с случайно использованными предварительными выпусками и сравните это с фиксированной сборкой здесь .)