Чи є якась істотна різниця між
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
в setup.py
, а потім pip install -e .
встановлює залежності з ПУМ, а python setup.py develop
можна встановити з easy_install
, і може викликати проблеми знову: «яєчного-інфо» , як уже згадувалося вище. Якщо install-requires
використовується dependency_links
з користувацькими URL-адресами git, із доданими ідентифікаторами яєць, це може бути особливо прикро.
pip install -e .
, він по суті робить символьне посилання у відповідному каталозі пакунків сайтів Python, щоб вказати на вашу робочу копію. Оскільки зміни коду вносяться до цієї робочої копії, вона моментально відображається у "встановленій" версії, тому вам не потрібно повторно запускати інсталяційні команди під час проходження. Це в першу чергу корисно для розробки в сховищі, яке представляє інстальований пакет, але також може бути зручним, наприклад, для написання деякої колекції модулів з абсолютним імпортом тощо
Ще одна відмінність: коли ви запускаєте python setup.py develop
версію, яка вважається попередньою версією (можливо, тому, що ви запускаєте її з клона git, коли не перевірили випуск), тоді ви включите встановлення попередніх випусків ваших залежностей . З іншого боку, pip install --editable
вам потрібно буде --pre
явно пройти, якщо ви хочете ці попередні випуски.
(Дивіться журнал CI з попередньо випущеними випадково використаними порівняннями та порівняйте їх із фіксованою збіркою тут .)