用于运行命令行的 Python 脚本,该命令行启动具有特定 Python 版本的 Python 脚本

Posted

技术标签:

【中文标题】用于运行命令行的 Python 脚本,该命令行启动具有特定 Python 版本的 Python 脚本【英文标题】:Python script to run command line which starts python script with specific python version 【发布时间】:2016-08-24 07:29:24 【问题描述】:

我需要一些帮助。有没有可能让python在windows中启动命令行,让命令行在我的电脑上执行另一个python版本的脚本?

示例:我的电脑上有两个版本的 python。一个在 Anaconda 中,另一个是纯 Python。现在我有一些我想按特定顺序执行的脚本。我的问题是,Google Analytics API 不适用于 Anaconda,而其他一些软件包(如 Simpy)不适用于纯 Python。所以我需要为一个项目使用两个不同版本的python。

现在我想编写一个小 Python 文件,它打开命令行并在我的不同 Python 版本上以特定顺序执行脚本。

我知道如何在命令行上运行 python 文件。这是通过

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

但是我怎样才能让一个python脚本在命令行中执行上面的那一行呢?

希望有人可以帮助我。

谢谢。

【问题讨论】:

【参考方案1】:
import os
os.system("C:\path_to_python\python.exe C:\path_to_file\file.py")

os.system() 返回命令的退出值,因此如果您需要脚本的一些输出,这将不起作用。

【讨论】:

差不多。它正在使用 import os os.sytem('C:\\path_to_python\\python.exe C:\\path_to_file\\file.py') 谢谢【参考方案2】:

建议你看看subprocess

# 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"])

【讨论】:

一般没有理由使用python.exe的路径。您可以使用"python"CreateProcess 追加.EXE,始终先搜索应用程序路径(即“加载应用程序的目录”)。【参考方案3】:

相反,您可以尝试编写一个批处理文件,您可以在其中指定运行文件的顺序以及运行文件的版本。 假设首先我想在 python2.7 中运行一个文件,然后在 python3.4 中运行一个文件,我的文件在 d:/pythonfiles

RunningSequence.bat

d:
cd D:\pythonfiles
c:\python27\python.exe python27file.py
c:\python34\python.exe python34file.py 

【讨论】:

【参考方案4】:

试试这个并告诉我:

import sys

with open(sys.argv[1], 'r') as my_file:
     exec(my_file.read())

【讨论】:

以上是关于用于运行命令行的 Python 脚本,该命令行启动具有特定 Python 版本的 Python 脚本的主要内容,如果未能解决你的问题,请参考以下文章

python argparse - 在没有命令行的情况下传递值

怎么执行一个自己写的脚本文件

在Linux上讲Java命令行的作为服务运行

kafka命令行的管理使用

启动单个 python 脚本作为不同的进程,不同的命令行参数

用于扩展或增强 bq 命令行的 Google BigQuery bq 命令行 SDK