Как убедиться, что необходимые пакеты всегда установлены / доступны - PullRequest
0 голосов
/ 11 июля 2019

Я работаю над скриптом на python, который опирается на несколько разных пакетов и библиотек. Когда этот сценарий переносится на другой компьютер, пакеты, необходимые для его запуска, иногда отсутствуют или являются более старыми версиями, которые не имеют такой же функциональности и вызывают сбой сценария.

Я подумывал об использовании виртуальной среды, но я не могу найти способ, чтобы скрипт использовал конкретную среду, которую я проектирую по умолчанию, и чтобы использовать среду, пользователь должен вручную активировать ее из командной строки. .

Я также пытался проверить версии пакетов, установленных на компьютере, и, если их недостаточно, обновить их из скрипта, как описано здесь:

Установка модуля Python внутри кода

Существует ли какой-либо более простой / надежный способ убедиться, что необходимые пакеты всегда будут доступны независимо от того, где он запущен?

Ответы [ 3 ]

1 голос
/ 11 июля 2019

Если проблема заключается в том, что требуемые пакеты доступны в новой среде или виртуальной среде, вы можете использовать pip и сгенерировать файл require.txt и проверить его в системе контроля версий или использовать инструмент, который сделает это за вас, например, pipenv .

Если вы предпочитаете сгенерировать файл require.txt вручную, вам следует:

  1. Установить свои зависимости, используя pip
  2. Введите pip freeze > requirements.txt, чтобы сгенерировать requirements.txt файл
  3. Проверьте requirements.txt в вашем программном обеспечении для управления источниками

Когда вам нужно настроить новую среду, используйте pip install -m requirements.txt

1 голос
/ 11 июля 2019

Обычный подход заключается в создании сценария установки, который управляет вашими зависимостями. Затем, когда вы переместите свой проект в новую среду, ваш установщик проверит наличие всех зависимостей. Я рекомендую вам проверить setuptools: https://setuptools.readthedocs.io/en/latest/

Если вы не хотите устанавливать зависимости всякий раз, когда вам нужно использовать ваш скрипт где-то в новом месте, тогда вы можете упаковать свой скрипт в контейнер Docker.

0 голосов
/ 12 июля 2019

Решением, которое я использовал, было включение пользовательской библиотеки (папки со всеми желаемыми пакетами) в папку с моим сценарием, и я просто импортировал их оттуда:

from Customlib import pkg1, pkg2,...

Пока пользовательская библиотека и скрипт остаются в одной папке, у нее всегда будет доступ к нужным пакетам и верным версиям этих пакетов.

Я не уверен, насколько надежно это решение на самом деле или какие возможные ошибки могут возникнуть из-за этого, если оно передается от машины к машине, но сейчас это, кажется, работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...