不确定这是否可能。我有一组python脚本,并在~/.bashrc中修改了linux路径,这样每当我打开终端时,python脚本都可以作为命令运行。
export PATH=$PATH:/home/user/pythonlib/
我的_command.py位于上面的路径中。
我可以在终端的任何地方运行我的_command.py(args),它将运行python脚本。
我想从一个不同的python脚本控制这个功能,因为这将是自动化我的处理例程的最快解决方案。因此,我需要它打开一个终端,从我正在处理的python脚本中运行我的_command.py(args)。
我尝试过子流程:
import subprocess
test = subprocess.Popen(["my_command.py"], stdout=subprocess.PIPE)
output = test.communicate()[0]
虽然my_command.py通常在我启动的任何终端上都可用,但在这里我无法访问它,返回找不到的文件。
我可以使用os启动一个新的终端,然后输入my_command.py,它就可以工作了
os.system("x-terminal-emulator -e /bin/bash")
那么,有没有办法让第二个方法接受要从带有参数的python运行的脚本?
乌班图16
谢谢:)
最佳答案
popen不会为您在python脚本中创建的会话加载系统路径。必须修改会话中的路径,以便将目录包含到项目中,如下所示:
someterminalcommand = "my_command.py (args)"
my_env = os.environ.copy()
my_env["PATH"] = "/home/usr/mypythonlib/:" + my_env["PATH"]
combine = subprocess.Popen(shlex.split(someterminalcommand), env=my_env)
combine.wait()
这允许我从不同的python会话运行“my_command.py”文件,就像打开了一个终端窗口一样。
关于python - Linux,Python开放终端运行全局python命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48372449/