2014-01-20 3 views
0

Я модифицирование Python коды кто-то еще, и он в настоящее время синхронно выполняет внешний скрипт Python (fast-downward) с использованием системы по умолчанию Python (и получает код возврата):Как в Python запускать внешний скрипт Python с помощью текущего интерпретатора Python?

code = os.system("%s/src/translate/translate.py %s %s" % (down_home, domain, pddl) # ... 

Я не хочу, чтобы /usr/local/bin/python2.7 мой интерпретатор Python по умолчанию (CentOS поставляется с более старым Python). Как я могу вызвать внешний скрипт Python с помощью текущего интерпретатора Python?

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

+0

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

+0

Вы пробовали синтаксис 'import', как описано здесь: http://docs.python.org/2/tutorial/modules.html? – Dan

+0

У меня нет, потому что я не знаю, будет ли вызов функции (при условии, что я могу определить правильную функцию для вызова) в скрипте будет иметь такое же поведение, как и выполнение скрипта. – Daniel

ответ

1

Возможно, вы просто захотите использовать virtualenv с новым интерпретатором. Вы можете установить новый Python, но не сделать его основной системой Python. Или, возможно, у вас уже установлен Python 2.7.

https://github.com/0xdata/h2o/wiki/Installing-python-2.7-on-centos-6.3.-Follow-this-sequence-exactly-for-centos-machine-only

Тогда

pip install virtualenv 
virtualenv venv --distribute -p /usr/local/bin/python2.7 
source venv/bin/activate 

Теперь ваш путь будет скорректирован в локальный каталог venv, содержащий новый Python. Вы можете установить зависимости и т. Д., И они будут установлены только в venv. Это отличный способ изолировать вашу среду друг от друга.

1

Это должно быть это:

import subprocess, sys 
subprocess.call([sys.executable, ...]) 
1

Вы можете использовать check_call от subprocess вы можете получить возвращаемое значение, и это вызывает, если код возврата не равен нулю.

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