Python: ссылка на другой проект
Я хочу иметь возможность запускать мой проект Python из командной строки. Я ссылаюсь на другие проекты, поэтому мне нужно иметь возможность запускать модули в других папках.
Один из способов сделать эту работу - изменить переменную среды Pythonpath, но я думаю, что это злоупотребление. Другой способ - скопировать все нужные файлы в один каталог и запустить Python. Есть ли лучший способ сделать это?
Примечание: я на самом деле программирую в Eclipse, но я хочу иметь возможность запускать программу удаленно.
Похожие вопросы:
- Ссылка на другой проект: этот вопрос в основном спрашивает, как импортировать
5 ответов
Если вы импортируете sys, он содержит список каталогов в PYTHONPATH как sys.path
Добавление каталогов в этот список (sys.path.append("my/path")) позволяет импортировать из этих мест в текущем модуле в обычном режиме без изменения глобальных настроек в вашей системе.
Посмотрите на инструменты, такие как
virtualenv, для настройки виртуального питона, в котором вы можете устанавливать свои модули, не получая их глобально. http://pypi.python.org/pypi/virtualenv
Setuptools, который позволяет вам указать (и автоматически установить) зависимости для ваших модулей. http://pypi.python.org/pypi/setuptools (Если у вас есть проблемы с setuptools, взгляните на Distribute, поддерживаемый форк. http://pypi.python.org/pypi/distribute)
Buildout, который позволяет вам развернуть полную прикладную среду, включая стороннее программное обеспечение, такое как MySQL или что-либо еще. http://pypi.python.org/pypi/zc.buildout/
Во-первых, я хочу убедиться, что модуль, который я хочу включить, не был установлен глобально. Затем я добавляю символическую ссылку в каталог includee:
# With pwd == module to which I want to add functionality.
ln -s /path/to/some_other_module_to_include .
и тогда я могу сделать стандартный импорт. Это позволяет использовать несколько версий и т.д. Это не требует изменения каких-либо глобальных настроек, и вам не нужно менять программный код, если вы работаете на разных машинах (просто измените символическую ссылку).
Я только что понял, что на самом деле решил эту проблему раньше. Вот подход, который я использовал - гораздо более сложный, чем в mavnn, но я также решал проблему запуска программы Python2.x из Python 3.0
import os
import subprocess
env=os.environ.copy()
env['PYTHONPATH']=my_libraries
kwargs={"stdin":subprocess.PIPE, "env":env}
subprocess.Popen(["python","-u",program_path],**kwargs)
Если под "запуском модулей" вы подразумеваете их импорт, вас может заинтересовать вопрос, который я задавал некоторое время назад.