Скрипт Python для запуска командной строки, которая запускает скрипт Python с определенной версией Python

Мне нужна помощь. Есть ли возможность позволить python запустить командную строку в Windows и позволить командной строке выполнить скрипт в другой версии python на моем компьютере?

Пример: у меня на компьютере две версии Python. Один находится внутри Anaconda, а другой — на чистом Python. Теперь у меня есть несколько сценариев, которые я хочу выполнить в определенном порядке. Моя проблема в том, что API Google Analytics не работает с Anaconda, а некоторые другие пакеты (например, Simpy) не работают с чистым Python. Поэтому мне нужно работать с двумя разными версиями Python для одного проекта.

Теперь я хочу написать небольшой файл Python, который открывает командную строку и выполняет скрипты в определенном порядке на разных моих версиях Python.

Я знаю, как запустить файл python в командной строке. Это через

C:\path_to_python\python.exe C:\path_to_file\file.py

Но как я могу сделать скрипт Python, выполняющий эту строку выше в командной строке?

Надеюсь, кто-нибудь может мне помочь.

Спасибо.


person Steve Iron    schedule 29.04.2016    source источник


Ответы (4)


import os
os.system("C:\path_to_python\python.exe C:\path_to_file\file.py")

os.system() возвращает значение выхода команды, поэтому, если вам нужен вывод скрипта, это не сработает.

person hansn    schedule 29.04.2016
comment
Почти. Он работает с import os os.sytem('C:\\path_to_python\\python.exe C:\\path_to_file\\file.py') Спасибо. - person Steve Iron; 29.04.2016

Я предлагаю вам взглянуть на подпроцесс

# this is new to python 3.5
import subprocess
cmd = subprocess.run(["C:/path_to_python/python.exe", "C:/path_to_script/script.py"], stdout=subprocess.PIPE)
return_string = cmd.stdout

# alternative for getting command output in python 3.1 and higher
import subprocess
return_string = subprocess.check_output(["C:/path_to_python/python.exe", "C:/path_to_script/script.py"])
person Emma    schedule 29.04.2016
comment
Как правило, нет причин использовать путь к python.exe. Вы можете просто использовать "python". CreateProcess добавляет .EXE и путь к приложению (т. е. каталог, из которого приложение загружен) всегда ищется первым. - person Eryk Sun; 30.04.2016

Вместо этого вы можете попробовать написать пакетный файл, в котором вы можете указать порядок, в котором вы хотите запускать файлы, и с какой версией вы должны запускать файл. скажем, сначала я хочу запустить файл в python2.7, а затем в python3.4, и мои файлы были в d:/pythonfiles

RunningSequence.bat

d:
cd D:\pythonfiles
c:\python27\python.exe python27file.py
c:\python34\python.exe python34file.py 
person Strik3r    schedule 29.04.2016

попробуйте это и дайте мне знать:

import sys

with open(sys.argv[1], 'r') as my_file:
     exec(my_file.read())
person Aymen Alsaadi    schedule 22.01.2019