2014-08-28 3 views
0

Допустим, разработчик работает над проектом, когда он понимает, что ему нужно использовать какой-то пакет. Он использует pip для его установки. Теперь, после установки, разработчик запишет его как зависимость в файле requirements/setup.py?Как обрабатывать зависимости python во всем проекте?

Что делает тот же самый разработчик, если он забыл записать все зависимости проекта (или если он не знал лучшего, так как не делал этого долго)?

Что я спрашиваю, каков рабочий процесс при работе с внешними пакетами из PyPi?

ответ

4

Команда:

pip freeze > requirements.txt 

копирует все зависимости в настоящее время в среде питона в requirements.txt. http://pip.readthedocs.org/en/latest/reference/pip_freeze.html

+0

Надеюсь разработчик использовал virtualenv и ограничил модули, установленные только для проекта, иначе вы получите каждый модуль, установленный глобально в системе. Он по-прежнему будет работать, но вы получите много модулей, которые, вероятно, не используются. – veroxii

1

Это зависит от проекта.

Если вы работаете над библиотекой, вы хотите разместить свои зависимости в setup.py, так что если вы поместите библиотеку в PyPi, люди смогут ее установить и ее зависимостями автоматически.

Если вы работаете над приложением в Python (возможно, веб-приложение), файл requirements.txt будет проще для развертывания. Вы можете скопировать весь свой код туда, где он вам нужен, настроить виртуальную среду с помощью virtualenv или pyvenv, а затем сделать pip install -r requirements.txt. (Вы должны делать это и для развития, чтобы у вас не было беспорядка библиотек по всему миру).

Как только вы установили их, вы можете установить пакеты, которые вы устанавливаете, на свой requirements.txt, чем пытаться выяснить, какие из них вам нужны в конце. То, что я делаю так, чтобы я никогда не забывал, сначала пишу пакеты в файл, а затем устанавливаю с pip install -r.

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

Смежные вопросы