Есть ли существенная разница между
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
, который создает «информацию о яйце» непосредственно относительно текущего рабочего каталога.
Подробнее: docs
Также прочтите документы инструментов setuptools.
Еще одно отличие: pip install -e
использует wheel, а python setup.py develop
не использует.
С install
вы можете добиться того же поведения, используя pip install -e /path/to/package --no-use-wheel
Дополнительная информация о колесах: колеса Python
--no-use-wheel
УСТАРЕЛО в пользу --no-binary :all:
- person Nzbuu; 15.03.2017
Другое отличие, которое может благоприятствовать pip install -e
, заключается в том, что если ваш проект имеет зависимости в install_requires
в 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, чтобы указать на вашу рабочую копию. Изменения кода, внесенные в эту рабочую копию, мгновенно отражаются в установленной версии, поэтому вам не нужно повторно запускать команды установки по ходу работы. Это в первую очередь полезно для разработки в репозитории, который представляет собой устанавливаемый пакет, но также может быть полезно, например, для написание некоторой коллекции модулей только с абсолютным импортом и т. д.
- person ely; 14.10.2019
Еще одно отличие: когда вы запускаете python setup.py develop
для версии, которая считается предварительным выпуском (возможно, потому, что вы запускаете его из клона git, когда не проверили выпуск), вы разрешите установку предварительной версии. выпуски ваших зависимостей. С другой стороны, с pip install --editable
вам нужно будет явно передать --pre
, если вы хотите получить эти предварительные версии.
(См. журнал CI со случайно использованными предварительными версиями и сравните это с фиксированной сборкой здесь.)