Выполнить другой экземпляр Python из другого экземпляра - PullRequest
3 голосов
/ 14 января 2012

В настоящее время у меня есть скрипт, выполняемый программой, которая поставляется с собственным интерпретатором Python.Эта версия не содержит библиотек, которые мне нужны, поэтому я использую os.exec для выполнения второго сценария на локально установленном экземпляре 2.7.

Однако второй сценарий, когда выполняется вручную, работает отлично и не имеетPYTHONPATH определяется.Если я регистрирую вывод PYTHONPATH при выполнении оболочки и при загрузке второго скрипта, у них обоих инициализируется PYTHONPATH для исходных интерпретаторов, что также является экземпляром 2.6.Это, очевидно, привело меня к мысли, что у меня есть некоторые переменные среды, которые я не ожидал, более того, в 2 других системах эта установка работает на 100%, как и ожидалось, в то время как в этой одной системе такое поведение происходит.Есть ли более чистый способ создать обертку для вызова второго скрипта?Если нет, то как мне избежать этой ненужной передачи переменных env.

Ответы [ 2 ]

6 голосов
/ 14 января 2012

Существует много вариантов команды os.exec*:

execl(file, *args)
execle(file, *args, env)
execlp(file, *args)
execlpe(file, *args, env)
execv(path, args)
execve(path, args, env)
execvp(file, args)
execvpe(file, args, env)
  • l варианты использования *args, v варианты использования args.
  • p варианты используют переменную окружения PATH для поиска file
  • e переменные заменяют окружающую среду. Не e варианты используют env of текущий процесс.

Вы можете использовать один из вариантов e, например os.execle, для управления переменными среды, передаваемыми в новый процесс.

2 голосов
/ 14 января 2012

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

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