Два варианта в setup.py developи installменя смущают. Согласно этому сайту , используя developсоздает специальную ссылку на каталог сайтов-пакетов.
Люди предложили, чтобы я использовал python setup.py installдля новой установки и python setup.py developпосле внесения каких-либо изменений в установочный файл.
Может кто-нибудь пролить свет на использование этих команд?
python setup.py install используется для установки (как правило, сторонних) пакетов, которые вы не собираетесь разрабатывать / модифицировать / отлаживать самостоятельно.
Что касается ваших собственных вещей, вы хотите сначала установить пакет, а затем иметь возможность часто редактировать код без необходимости каждый раз переустанавливать пакет - и это именно то, что python setup.py developделает: он устанавливает пакет (обычно это просто исходная папка) таким образом, что вы можете легко редактировать код после его установки в (виртуальную) среду и сразу же вступать в силу.
Обратите внимание, что для установки пакетов настоятельно рекомендуется использовать pip install .(установить) и pip install -e .(установить разработчиком), так как setup.pyпрямой вызов приведет к неправильным действиям для многих зависимостей, таких как предварительные выпуски пакетов и несовместимые версии пакетов, или затруднит удаление пакета pip.
Эрик прав. Также полезно знать, что setup.py developпоставляется с --uninstallопцией, когда вы закончите взламывать.
Philadams
5
Последняя мысль здесь заключается в том, что setup.py developпри взломе пакета python можно использовать «простую (но явную) модификацию пути для правильного разрешения пакета», - Kenneth Reitz
philadams
4
Я столкнулся с проблемами, python setup.py developпытаясь настроить Ceilometer для местного развития. Я закончил тем, что использовал pip install -e PATH(в пределах virtualenv), чтобы избежать проблем, которые возникли черезeasy_install .
Джо д'Андреа
1
не уверен, что это имеет значение, но если я использую Python 3 и т. д., нужно ли работать по- python setup.py developдругому?
Чарли Паркер
1
Он работает с python3, но не забудьте удалить все текущие установки pip, которые у вас могут быть, так как они будут конфликтовать друг с другом (это случилось со мной в данный момент).
Лео Жермонд
124
Из документации . Пакет developне будет установлен, но он будет создан .egg-linkв каталоге развертывания обратно в каталог исходного кода проекта.
Так что это похоже на установку, но вместо копирования в site-packagesнее добавляется символическая ссылка ( .egg-linkдействует как мультиплатформенная символическая ссылка).
Таким образом, вы можете редактировать исходный код и видеть изменения напрямую, без необходимости переустанавливать каждый раз, когда вы вносите небольшие изменения. Это полезно, когда вы являетесь разработчиком этого проекта, отсюда и название develop. Если вы просто устанавливаете чужой пакет, вы должны использоватьinstall
IIUC вы никогда не должны setup.py developв вашей системе, это имеет смысл только в virtualenv.
divybyzero
2
@dividebyzero Вы имеете в виду, всегда нужно использовать python setup.py develop --user, если я правильно понимаю? Кроме того, не могли бы вы сказать мне, где пакет установлен с помощью python setup.py develop --user? Спасибо!
ROBOT AI
2
Я думаю, что --userбудет установлен в каталог в вашей домашней учетной записи, и не повлияет на других пользователей в вашей системе. Он developсоздаст ссылки на исходный каталог вашего проекта вместо того, чтобы копировать все. develop --userдолжно быть в порядке, и developв virtualenv тоже. developСтранно только для реальной системы, потому что другие пользователи могут использовать что-то, что указывает на проект в вашей личной копии исходного кода проекта.
Dividebyzero
4
Многие (большинство?) Люди не работают в многопользовательских системах
patstew
1
@boatcoder, Mac и Linux (и Windows) могут быть многопользовательскими способными системы, но , скорее всего , разработчиком является единственным (реальный) учетной записью пользователя его стола, и я считаю , что это то , что pastew имело в виде.
setup.py develop
поставляется с--uninstall
опцией, когда вы закончите взламывать.setup.py develop
при взломе пакета python можно использовать «простую (но явную) модификацию пути для правильного разрешения пакета», - Kenneth Reitzpython setup.py develop
пытаясь настроить Ceilometer для местного развития. Я закончил тем, что использовалpip install -e PATH
(в пределах virtualenv), чтобы избежать проблем, которые возникли черезeasy_install
.python setup.py develop
другому?Из документации . Пакет
develop
не будет установлен, но он будет создан.egg-link
в каталоге развертывания обратно в каталог исходного кода проекта.Так что это похоже на установку, но вместо копирования в
site-packages
нее добавляется символическая ссылка (.egg-link
действует как мультиплатформенная символическая ссылка).Таким образом, вы можете редактировать исходный код и видеть изменения напрямую, без необходимости переустанавливать каждый раз, когда вы вносите небольшие изменения. Это полезно, когда вы являетесь разработчиком этого проекта, отсюда и название
develop
. Если вы просто устанавливаете чужой пакет, вы должны использоватьinstall
источник
Еще одна вещь, которая может оказаться полезной при использовании этого
develop
метода, это--user
возможность установки без sudo. Пример:вместо того
источник
setup.py develop
в вашей системе, это имеет смысл только в virtualenv.python setup.py develop --user
, если я правильно понимаю? Кроме того, не могли бы вы сказать мне, где пакет установлен с помощьюpython setup.py develop --user
? Спасибо!--user
будет установлен в каталог в вашей домашней учетной записи, и не повлияет на других пользователей в вашей системе. Онdevelop
создаст ссылки на исходный каталог вашего проекта вместо того, чтобы копировать все.develop --user
должно быть в порядке, иdevelop
в virtualenv тоже.develop
Странно только для реальной системы, потому что другие пользователи могут использовать что-то, что указывает на проект в вашей личной копии исходного кода проекта.