Есть ли существенная разница между
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_requiresin 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 с случайно использованными предварительными выпусками и сравните это с фиксированной сборкой здесь .)