Как запустить контекстно-зависимые команды в 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")
Благодарю.
- Какая хорошая командная структура командной строки для Python 2 и 3?
- Как я могу отлаживать POST-запросы с помощью BaseHTTPServer / SimpleHTTPServer python?
- Сценарий Python выводит вывод os.system перед печатью
- Каков наилучший способ проверить правильность ввода командной строки скрипту в python?
- Множество вариантов с docopt
Чтобы активировать 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
.
- команда python run bash получает плохой результат
- Есть ли способ для чтения символов из экземпляра подпроцесса. Когда процесс, который он вызвал, еще не выдал новую строку?
- Полная командная строка, когда она была напечатана
- проверка JSON из командной строки с использованием `python -m jsontool` дает« Нет объекта JSON, который может быть декодирован »
- запустить скрипт python в терминале без команды python
- Как просмотреть фактическую команду, выполняемую «subprocess.check_call ()»
- Ошибка при использовании функции offlineimap: getfolder () запрашивает несуществующую папку
- Поверните приложение или скрипт в команду оболочки
- Если операторы и сценарии одного сценария python из командной строки
- Ускорение первоначального выполнения приложения командной строки Python
- Лучшая практика для рекурсивного консольного инструмента в Python