Как запустить контекстно-зависимые команды в Python?

Я хочу написать скрипт для установки пакета python в Python в virtualenv. Я пишу функцию для установки virtualenv

def prepareRadioenv(): if not os.path.exists('radioenv'): print 'Create radioenv' system('easy_install virtualenv') system('virtualenv --no-site-package radioenv') print 'Activate radioenv' system('source radioenv/bin/activate') 

Я пытаюсь использовать «source radioenv / bin / activate» для активации виртуальной среды, к сожалению, os.system создает подпроцесс для выполнения команды. Изменение среды, произведенное активизацией, исчезает с подпроцессом, это не влияет на процесс Python. Здесь возникает проблема, как я могу выполнить некоторую контекстно-зависимую последовательность команд в Python?

Другой пример:

 system("cd foo") system("./bar") 

Здесь cd не влияет на следующую систему («. Bar»). Как заставить этот контекст среды жить в разных командах?

Есть что-то вроде контекстно-ориентированной оболочки? Чтобы я мог написать код Python следующим образом:

 shell = ShellContext() shell.system("cd bar") shell.system("./configure") shell.system("make install") if os.path.exists('bar'): shell.system("remove") 

Благодарю.

Чтобы активировать virtualenv из Python, используйте скрипт activate_this.py (который создается с помощью virtualenv) с помощью execfile .

 activate_this = os.path.join("path/to/radioenv", "bin/activate_this.py") execfile(activate_this, dict(__file__=activate_this)) 

Вы пытаетесь использовать Python в качестве оболочки?

Параллельно с ответом Даниэля Роземана, который, как представляется, является самой большой частью того, что вам нужно, обратите внимание:

 shell.system("cd bar") 

пишется в Python как:

 os.chdir("bar") 

Проверьте модуль os на наличие других функций, например rmdir , remove и mkdir .