Python setup.py розвивати проти встановлення


336

Два варіанти в setup.py developі installмене бентежать. За даними цього сайту , використовуючиdevelop створює спеціальне посилання на каталог сайтів-пакунків.

Люди запропонували мені використовувати python setup.py installдля свіжої установки таpython setup.py develop після внесення змін у інсталяційний файл.

Чи може хтось пролити трохи світла на використання цих команд?

Відповіді:


468

python setup.py install використовується для встановлення (як правило, сторонніх) пакетів, які ви не збираєтеся самостійно розробляти / змінювати / налагоджувати.

Для власних речей потрібно спочатку встановити пакунок, а потім мати можливість часто редагувати код, не потребуючи щоразу повторного встановлення пакета - і саме це python setup.py developробить: він встановлює пакунок (зазвичай це лише папка джерела) таким чином, що дозволяє вам зручно редагувати код після його встановлення у (віртуальне) середовище, і зміни набирають чинності негайно.

Зауважте, що для встановлення пакетів настійно рекомендується використовувати pip install .(встановити) та pip install -e .(встановити розробник), оскільки виклик setup.pyбезпосередньо призведе до неправильних дій для багатьох залежностей, таких як попередні випуски та несумісні версії пакету або змусить пакет важко видалити pip.


81
Ерік правий. Також корисно знати, що setup.py developпостачається --uninstallваріант, коли ви закінчите злому.
філадами

5
Остання думка тут полягає в тому, що ще одним варіантом, setup.py developколи при злому пакета python є використання "простої (але явної) модифікації шляху, щоб правильно вирішити пакунок" re Kenneth Reitz
philadams

4
Я зіткнувся з проблемами, python setup.py developнамагаючись налаштувати цілометр для місцевого розвитку. Я в кінцевому підсумку використовував pip install -e PATH(в рамках virtualenv), щоб уникнути проблем, які виникли черезeasy_install .
Джо Д'Андреа

1
не впевнений, що це має значення, але якщо я використовую python 3 і т. д., чи потрібно працювати python setup.py developіншим чином?
Чарлі Паркер

1
Він працює з python3, але не забудьте видалити будь-яку поточну інсталяцію, яка у вас може виникнути, оскільки вони зіткнуться (це сталося зі мною на даний момент).
Лео Гермонд

124

З документації . Пакет developне встановить пакет, але він створить .egg-linkв каталозі розгортання назад до каталогу вихідного коду проекту.

Так це як встановлення, але замість копіювання до site-packagesнього додається символічне посилання (the.egg-link діє як багатоплатформна символічна посилання).

Таким чином ви можете редагувати вихідний код і бачити зміни безпосередньо, не потребуючи перевстановлення кожного разу, коли ви вносите невеликі зміни. Це корисно, коли ви розробник цього проекту, звідси і назва develop. Якщо ви просто встановлюєте чужий пакет, який ви повинні використовуватиinstall


24

Інша річ, яка може виявитися корисною для людей при використанні developметоду, - це --userможливість встановити без sudo. Наприклад:

python setup.py develop --user

замість

sudo python setup.py develop

11
IIUC, який ви ніколи не повинні бути setup.py developу своїй системі, це має сенс лише у virtualenv.
ділбізеро

2
@dividebyzero Ви маєте на увазі, що завжди слід використовувати python setup.py develop --user, якщо я правильно розумію? Крім того, чи не могли б ви сказати мені, де встановлений пакунок, використовуючи його python setup.py develop --user? Дякую!
ROBOT AI

2
Я думаю, що --userвстановлення буде встановлено в каталозі вашого домашнього облікового запису і не вплине на інших користувачів вашої системи. developРобитиме посилання на каталог з вихідними кодами проекту замість реального копіювання все. develop --userповинно бути гаразд, і developв virtualenv теж. developДивна лише ця система, адже у вас можуть бути інші користувачі, які використовують щось, що вказує на проект, у вашій особистої копії вихідного коду проекту.
ділбізеро

4
Хоча багато людей (більшість?) Не працюють на багатокористувацьких системах
квітня 1717 року

1
@boatcoder, Mac і Linux (і Windows) можуть бути системами, що підтримують користувачів , але, швидше за все, розробник - це єдиний (справжній) обліковий запис користувача свого робочого столу, і я вважаю, що саме це означало pastew.
MestreLion
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.