Перетащите установленные пакеты Python при обновлении

Как кто-то, кто управляет несколькими веб-серверами, каждый из которых запускает набор сайтов Django, очень важно держать поверх моего стека Python. Из (вероятно, плохой) привычки я полагаюсь на Ubuntu для ряда моих пакетов Python, включая python-django и множество дополнительных функций python-django-*. Веб-сайты требуют, чтобы они запускались, но пока пакет все еще существует, это не проблема. Я делаю это вместо использования VirtualEnv (и др.), Потому что хочу, чтобы Ubuntu установил обновления безопасности.

Однако репозитории Ubuntu не обслуживают всех. Бывают случаи, когда я буду использовать pip или easy_install для вставки последней версии пакета Python. Когда вы обновляете Python (как это иногда бывает в Ubuntu), вы теряете все свои pip -установленные пакеты.

Что меня пугает, чем глубже я получаю, тем больше серверов я администрирую, Обновление ОС в один прекрасный день, для чего требуются часы и часы моего времени, тестирование сайтов, переустановка пакетов python через pip. Хуже всего это потенциальное время простоя для клиентских сайтов, хотя я тестирую свою машину разработки (всегда на Ubuntu-последнем), поэтому это должно компенсировать некоторые из этих проблем.

Я могу что-то сделать, чтобы сделать уверенные обновления Python означают, что существующие, не-dpgk'd пакеты Python продвигаются?

Это будет гарантировать, что у меня всегда был доступ к тем же пакетам. Мне все равно придется проверять несовместимость, но это было бы хорошим началом.

Возможно, есть одно лучшее решение: приложение, которое вел себя как apt и dpkg, но для взаимодействия с PyPi (где pip и easy_install получают большую часть своего mojo). Что-то, что хранит локальный список установленных пакетов, проверено на наличие обновлений, таких как apt, управляемая установка и т. Д. [D5] Можно ли что-то сделать, чтобы убедиться, что обновления для Python означают, что существующие, не-dpgk'd пакеты Python вывел вперед? Или это идея мусора?

5
задан 29 September 2010 в 17:45

20 ответов

Что касается сохранения ваших пакетов Python при обновлении системы Python: я вижу два варианта:

Вы можете установить материал без Ubuntu Python с помощью easy_install --install-dir /usr/local/python. Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path, например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (чей документ гласит, что «Локальные аддоны переходят в /usr/local/lib/python<version>/dist-packages»). Вы можете использовать virtualenvs, если вы можете поместите все данные и конфигурацию приложения в каталог, не зависящий от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data/ b. Создать virtualenv myapp-code.XXX/ (где XXX - это уникальный номер версии, например date -I) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY, запустить приложение из virtualenv myapp-code.YYY. Если что-то пойдет не так, вы можете быстро вернуться к старому virtualenv.

По-видимому, 2. больше работы (но pip плюс некоторые сценарии оболочки потребуют много времени для его автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения , которые зависят от разных версий некоторого пакета Python.

Что касается вашего вопроса о пакетах, отличных от apt-get для Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. [31] Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве, таком как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu обеспечивают скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение совместимости всех пакетов Ubuntu в основных репозиториях.

Подобного скоординированного релиза пакетов Python просто нет: каждый пакет независим, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 26 May 2018 в 01:15

Что касается сохранения ваших пакетов Python при обновлении системы Python: я вижу два варианта:

Вы можете установить материал без Ubuntu Python с помощью easy_install --install-dir /usr/local/python. Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path, например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе указано, что «Локальные аддоны переходят в /usr/local/lib/python<version>/dist-packages»). Вы можете использовать virtualenvs, если вы можете поместите все данные и конфигурацию приложения в каталог, не зависящий от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data/ b. Создать virtualenv myapp-code.XXX/ (где XXX - это уникальный номер версии, например date -I) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY, запустить приложение из virtualenv myapp-code.YYY. Если что-то пойдет не так, вы можете быстро вернуться к старому virtualenv.

По-видимому, 2. больше работы (но pip плюс некоторые сценарии оболочки потребуют много времени для его автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения , которые зависят от разных версий некоторого пакета Python.

Что касается вашего вопроса о пакетах, отличных от apt-get для Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. [31] Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве, таком как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu обеспечивают скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение совместимости всех пакетов Ubuntu в основных репозиториях.

Подобного скоординированного релиза пакетов Python просто нет: каждый пакет независим, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 25 July 2018 в 23:09

Что касается сохранения ваших пакетов Python при обновлении системы Python: я вижу два варианта:

Вы можете установить материал без Ubuntu Python с помощью easy_install --install-dir /usr/local/python. Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path, например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе указано, что «Локальные аддоны переходят в /usr/local/lib/python<version>/dist-packages»). Вы можете использовать virtualenvs, если вы можете поместите все данные и конфигурацию приложения в каталог, не зависящий от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data/ b. Создать virtualenv myapp-code.XXX/ (где XXX - это уникальный номер версии, например date -I) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY, запустить приложение из virtualenv myapp-code.YYY. Если что-то пойдет не так, вы можете быстро вернуться к старому virtualenv.

По-видимому, 2. больше работы (но pip плюс некоторые сценарии оболочки потребуют много времени для его автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения , которые зависят от разных версий некоторого пакета Python.

Что касается вашего вопроса о пакетах, отличных от apt-get для Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. [31] Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве, таком как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu обеспечивают скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение совместимости всех пакетов Ubuntu в основных репозиториях.

Подобного скоординированного релиза пакетов Python просто нет: каждый пакет независим, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 27 July 2018 в 03:08

Что касается сохранения ваших пакетов Python при обновлении системы Python: я вижу два варианта:

Вы можете установить материал без Ubuntu Python с помощью easy_install --install-dir /usr/local/python. Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path, например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе указано, что «Локальные аддоны переходят в /usr/local/lib/python<version>/dist-packages»). Вы можете использовать virtualenvs, если вы можете поместите все данные и конфигурацию приложения в каталог, не зависящий от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data/ b. Создать virtualenv myapp-code.XXX/ (где XXX - это уникальный номер версии, например date -I) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY, запустить приложение из virtualenv myapp-code.YYY. Если что-то пойдет не так, вы можете быстро вернуться к старому virtualenv.

По-видимому, 2. больше работы (но pip плюс некоторые сценарии оболочки потребуют много времени для его автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения , которые зависят от разных версий некоторого пакета Python.

Что касается вашего вопроса о пакетах, отличных от apt-get для Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. [31] Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве, таком как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu обеспечивают скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение совместимости всех пакетов Ubuntu в основных репозиториях.

Подобного скоординированного релиза пакетов Python просто нет: каждый пакет независим, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 31 July 2018 в 12:33

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 2 August 2018 в 04:29

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 4 August 2018 в 21:02

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 6 August 2018 в 04:34

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 7 August 2018 в 22:43

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 10 August 2018 в 10:49

Относительно того, как сохранить ваши пакеты Python при обновлении системы Python: я вижу два варианта:

  1. Вы можете установить вещи, отличные от Ubuntu Python, с помощью easy_install --install-dir / usr / local / python Затем вы убедитесь, что все ваши веб-приложения включают этот каталог в sys.path , например, включив его в PYTHONPATH или используя каталог, который автоматически включается в site.py (в документе говорится, что «Локальные аддоны переходят в / usr / local / lib / python & lt; version & gt; / dist-packages ")
  2. Вы можете использовать virtualenvs, если вы можете разместить все данные и конфигурацию приложения в каталоге, не зависящем от кода. Вот процедура эскиза: a. Поместите все независящие от кода файлы в каталог myapp-data / b. Создать virtualenv myapp-code.XXX / (где XXX - это уникальный номер версии, например, date -I ) c. Поместите код приложения и все пакеты зависимостей в myapp-code.XXX d. ln -s myapp-code.XXX myapp-code Когда вам нужно обновить, вы просто повторяете шаги b. и c. с другим кодом редакции YYY, затем: остановить текущее приложение, symlink myapp-code до myapp-code.YYY , запустить приложение из virtualenv myapp-code. YYY . Если что-то пойдет не так, вы можете быстро вернуться к старому виртуальному окну.

По-видимому, 2. больше работы (но pip плюс некоторые shell-скрипты будут долгий путь к автоматизации), но он также должен быть более надежным и позволит вам одновременно запускать приложения, зависящие от разных версий пакета Python.

Что касается вашего вопроса о apt-get -like для пакетов Python: pip явно запрещает такую ​​вещь, и по уважительной причине: API-интерфейсы пакетов и поведение могут меняться в разных версиях. Поэтому, если ваш код отлично работает с версией X, он может выйти из строя при запуске с версией X + 1. Это pip пытается предотвратить с помощью функций «замораживания» и «списка требований».

Конечно, тот же аргумент может быть применен к любой программе в двоичном дистрибутиве как Ubuntu; действительно, что делает apt-get полезным то, что Debian и Ubuntu предоставляют скоординированный выпуск совместимых пакетов: много усилий со стороны сопровождающих идет на обеспечение того, чтобы все пакеты Ubuntu в основные репозитории совместимы.

Существует такой скоординированный выпуск пакетов Python: каждый пакет является независимым, и нет никакой информации о том, какая версия других пакетов Python совместима с ним. (Это может быть хорошим дополнением к метаданным PyPI.)

3
ответ дан 13 August 2018 в 17:24

Я бы использовал систему управления конфигурацией, такую ​​как марионетка или шеф-повар, для запуска скриптов на всех серверах, чтобы синхронизировать их все. Ваши сценарии (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 26 May 2018 в 01:15

Я бы использовал систему управления конфигурацией, такую ​​как марионетка или шеф-повар, для запуска скриптов на всех серверах, чтобы синхронизировать их все. Ваши сценарии (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 25 July 2018 в 23:09

Я бы использовал систему управления конфигурацией, такую ​​как марионетка или шеф-повар, для запуска скриптов на всех серверах, чтобы синхронизировать их все. Ваши сценарии (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 27 July 2018 в 03:08

Я бы использовал систему управления конфигурацией, такую ​​как марионетка или шеф-повар, для запуска скриптов на всех серверах, чтобы синхронизировать их все. Ваши сценарии (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 31 July 2018 в 12:33

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 2 August 2018 в 04:29

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 4 August 2018 в 21:02

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 6 August 2018 в 04:34

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 7 August 2018 в 22:43

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 10 August 2018 в 10:49

Я бы использовал систему управления конфигурацией, такую ​​как puppet или chef , чтобы запускать скрипты на всех серверах, чтобы синхронизировать их все. Ваши скрипты (рецепты) могут управлять обновлением, включая автоматическое тестирование, если обновление было успешным или что-то сломало.

3
ответ дан 13 August 2018 в 17:24

Другие вопросы по тегам:

Похожие вопросы: