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

Такие программы, как gpodder, могут быть запущены непосредственно из исходной проверки, что очень удобно, однако другие хотят быть «установленными» для запуска.

Многие программы распространяются вместе с файлом setup.py с инструкциями по запуску «python ./setup.py install» от имени пользователя root, который помещает файлы в вашу файловую систему. Есть даже команды установки, такие как «разработка», которые, кажется, содержат обещание того, что я хочу. Итак, я попробовал:

export PYTHONPATH=/home/alex/python
python ./setup.py develop --install-dir=/home/alex/python

Который скачал кучу вещей локально и, кажется, волшебным образом гарантирует, что приложение, которое я взламываю, все еще работает из дерева src. Итак, я предполагаю, что мой обходной вопрос - это правильный способ разработки кода на Python? Как такие вещи, как easy_install и pip factor, влияют на это?

Итак, я попробовал следующее:

 python /usr/share/pyshared/virtualenv.py /home/alex/src/goobook
 cd /home/alex/src/goobook/googbook.git
 /home/alex/src/goobook/bin/python ./setup.py develop

И, наконец, связал программу с моим ~ / bin

 cd /home/alex/src/goobook
 linkbin.pl bin/goobook

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


17:17 alex@socrates/i686 [goobook] >goobook --help
/home/alex/bin/goobook:5: UserWarning: Module pkg_resources was already imported from        /home/alex/src/goobook/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg/pkg_resources.py, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
  from pkg_resources import load_entry_point
/home/alex/bin/goobook:5: UserWarning: Module site was already imported from /home/alex/src/goobook/lib/python2.5/site.pyc, but /home/alex/src/goobook/lib/python2.5/site-packages/distribute-0.6.10-py2.5.egg is being added to sys.path
  from pkg_resources import load_entry_point

18
stsquad 19 Июл 2010 в 17:33

4 ответа

Лучший ответ

Установить:

http://pypi.python.org/pypi/virtualenv

Настроить локализованную виртуальную среду для ваших библиотек и:

http://pypi.python.org/pypi/setuptools

То есть "easy_install" для установки новых вещей.

11
eruciform 19 Июл 2010 в 13:45

Руководство пользователя по упаковке Python, которое "призвано стать авторитетным ресурсом о том, как «Упаковывать, публиковать и устанавливать дистрибутивы Python с использованием текущих инструментов», рекомендует использовать pip для установки в «режиме разработки»:

pip install -e <path>

Таким образом, в корневом каталоге вашего пакета вы можете просто

pip install -e .

См. установку из дерева локальных источников.

3
Chris 29 Май 2017 в 01:58

Лучший способ разработки приложений Python с зависимостями - это:

  1. Загрузите нужную версию интерпретатора Python.

  2. Установите и используйте buildout (http://www.buildout.org/).

Buildout - это что-то вроде Maven для Java (автоматически выберет все необходимые пакеты).

Таким образом, ваш интерпретатор Python не будет загрязнен сторонними пакетами (это важно, если вы будете запускать разработанное приложение на других машинах). Кроме того, вы можете интегрировать buildout с пакетом virtualenv (это позволяет создавать виртуальные интерпретаторы python для каждого проекта).

0
Neuron 21 Ноя 2019 в 12:54

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

Начиная с 2012 года, де-факто предпочтительным инструментом для управления пакетами в Python является pip, а не setuptools. Pip способен обрабатывать зависимости и устанавливать / удалять глобально или внутри виртуальной среды. Пип даже выходит из коробки с virtualenv.

Python 3

Также стоит упомянуть тот факт, что виртуальные среды становятся частью самого Python в выпуске 3.3, с реализацией PEP 405.

5
Rodrigue 2 Окт 2012 в 11:14