Есть ли простой способ запустить скрипт Python в Windows / Linux / OS X?
На последних двух subprocess.Popen("/the/script.py")
работает, но в Windows я получаю следующую ошибку:
Traceback (most recent call last):
File "test_functional.py", line 91, in test_functional
log = tvnamerifiy(tmp)
File "test_functional.py", line 49, in tvnamerifiy
stdout = PIPE
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 804, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application
комментарий monkut : вариант использования неясен. Зачем использовать подпроцесс для запуска скрипта Python? Что-то мешает вам импортировать скрипт и вызывать нужную функцию?
Я писал быстрый сценарий для проверки общей функциональности инструмента командной строки Python (для проверки его на различных платформах). По сути, он должен был создать группу файлов во временной папке, запустить сценарий и проверить, что файлы были переименованы правильно.
Я мог бы импортировать скрипт и вызвать функцию, но, поскольку он опирается на sys.argv
и использует sys.exit()
, мне нужно было бы сделать что-то вроде ..
import sys
import tvnamer
sys.argv.append("-b", "/the/folder")
try:
tvnamer.main()
except BaseException, errormsg:
print type(errormsg)
Кроме того, я хотел захватить stdout и stderr для отладки, если что-то пошло не так.
Конечно, лучшим способом было бы написать сценарий более тестируемым способом, но сценарий в основном "готов", и я делаю последний пакет тестирования перед выпуском "1.0" (после чего я собираюсь сделать переписать / реструктурировать, что будет гораздо более аккуратным и более тестируемым)
По сути, гораздо проще было просто запустить сценарий как процесс после поиска переменной sys.executable
. Я написал бы это как shell-скрипт, но он не был бы кроссплатформенным. Окончательный сценарий можно найти здесь