python - Linux、Python打开终端运行全局python命令

标签 python linux bash shell

不确定这是否可能。我有一组 python 脚本,并修改了 ~/.bashrc 中的 linux PATH,这样每当我打开终端时,python 脚本就可以作为命令运行。

export PATH=$PATH:/home/user/pythonlib/

my_command.py 位于上述路径中。

我可以在终端的任何地方运行 my_command.py (args),它会运行 python 脚本。

我想从不同的 python 脚本控制此功能,因为这将是自动化我的处理例程的最快解决方案。所以我需要它来打开一个终端并从我正在处理的 python 脚本中运行 my_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")

那么,有没有办法让第二种方法接受你想用 args 从 python 运行的脚本?

Ubuntu 16

谢谢:)

最佳答案

Popen 不会为您在 python 脚本中创建的 session 加载系统路径。您必须修改 session 中的 PATH 以将目录包含到您的项目中,如下所示:

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 session 运行我的“my_command.py”文件,就像我打开了一个终端窗口一样。

关于python - Linux、Python打开终端运行全局python命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372449/

相关文章:

python - 在 Pandas 中使用合并列和索引

python - 向量化欧氏距离计算 - NumPy

linux - SOLARIS - 在操作系统升级之前验证操作系统版本

python -/bin/sh : 1: [: missing ]

linux - Grep 从一个文件中获取一个文件列表并根据条件打印该行的特定部分

python - 如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

python - 元组列表中的索引元素

linux - Ubuntu 15.04 上的 ENMTools_1.4.4.pl?

windows - 从 MINGW 启动时运行 System32 程序而不是 SysWOW64

bash - 使用 ps 检查正在运行的脚本数