2013-05-27 5 views
0

У меня есть 2 программы на основе python - родительская программа и дочерняя программа. В моей системе у меня 2 версии для python - 2.7 и 3.3. Иногда я буду использовать 2.7 для запуска программы, и иногда я буду использовать 3.3. Я буду использовать следующую команду для запускаPython: запуск другой программы python с использованием родительской версии python

./parent.py (default python27) 
python33 parent.py 

Как мог родительскую программу назвать ребенок запустить дочернюю программу, с питоном версии родителя?

Заранее спасибо

+1

Это не имеет смысла. Вы должны быть очень осторожны, чтобы написать программу (или две программы), которая будет работать как на Python 2, так и на Python 3, так как Python 3 сделал обратно-несовместимые изменения. – BrenBarn

+0

На самом деле мой код может поддерживать как python27, так и python33, так как я просто использую некоторую базовую функцию. Поскольку мне нужно проверить совместимость всей системы, мне нужно запустить обе программы под python27 и python33. Поэтому у меня есть эта проблема, в которой ребенок работает с той же версией, что и родитель. – Winston

+0

@BrenBarn: использование того же источника как для Python 2, так и для Python 3 является допустимым выбором даже нетривиальных кодовых баз, таких как django. – jfs

ответ

2

В то время как ваш пример был беден, я думаю, что вы после sys.executable.

subprocess.call([sys.executable, "manage.py", "celeryd"]) 
+0

Большое спасибо. sys.executable - то, что мне нужно. Спасибо – Winston

+0

Непонятно, почему вы используете форматирование строк здесь. Если 'exe' предназначен как аргумент для функций' subprocess'; список '[sys.executable," manage.py "," celeryd "]' более переносимый и безопасный выбор. – jfs

+0

Hey J.F. Вы правы - я просто пытался привести пример. Я обновил его, чтобы отразить более наглядный пример. – rh0dium

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