Чи є якась істотна різниця між
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 з попередньо випущеними випадково використаними порівняннями та порівняйте їх із фіксованою збіркою тут .)