Я пытаюсь создать скрипт Python для выполнения других сценариев Python, и он работает на большинстве скриптов, но не удастся, когда он встретит print('anything', end='')
. Это связано с тем, что подпроцесс работает 2,7, а не 3,4. Я не могу для жизни меня выяснить, как запустить подпроцесс 3.4.Подпроцесс Python запускает другую версию Python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (In
tel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> import subprocess
>>> sys.version
'3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)]'
>>> results = subprocess.check_output('testprint.py', shell=True)
>>> results
b'2.7 (r27:82525, Jul 4 2010, 07:43:08) [MSC v.1500 64 bit (AMD64)]\r\n'
testprint.py только это:
import sys
print(sys.version)
Edit: И, конечно, я бы реализовать решение после размещения вопроса. Я изменил код на следующее:
path = r'C:\Python34\python.exe'
results = subprocess.check_output([path, 'testprint.py'], shell=True)
Теперь я передаю исполняемый путь, через который будет проходить сценарий. Тем не менее, я хотел бы получить более элегантное и постоянное решение.
Я не очень опытен с этим модулем, но задаюсь вопросом, предназначено ли оно для использования 2.7 ... http://stackoverflow.com/questions/11170827/how-tell-python-script-to-use-particular -version – picus
Каково поведение при запуске testprint.py из командной строки без указания исполняемого файла python? – horns
Я собирался предложить execfile, но потом понял, что был удален (хотя вы можете посмотреть http://stackoverflow.com/questions/6357361/alternative-to-execfile-in-python-3-2). – Foon