如何在 Debian Linux 上使用 PyCharm 在 python 中执行系统调用?

How to execute a system call in python using PyCharm on Debian Linux?

我无法 运行 使用 PyCharm 的系统调用,也不知道要更改哪些变量或环境设置。

给定这个简单的脚本:

import os
cmd = 'ifconfig -a'
os.system(cmd)

...在终端的命令行中 运行 没问题,但会产生以下错误:

sh: ifconfig: command not found

我正在尝试 运行 的任何进程都会发生这种情况,例如 CSVSQL、PSQL 等

我试过: 在命令行显示我的 python 解释器路径,我尝试将它们添加到 PyCharm 解释器路径,没有有用

还有其他几个线程描述了类似的问题,但我似乎没有遇到好的解决方案。

我是 运行ning Linux Mint 19,虽然这适用于我的 Windows 安装(路径输出有很大不同)。

抱歉,如果这真的很简单...谢谢!

运行 printenv 在 Python 和终端上,并检查 PATH 变量。使用 os.environ['PATH'] = 'My path' 将其设置为您在终端上看到的内容。

对于未来的问题(我已经 运行 进入):

检查它是否为导出环境变量的快速方法是 运行 os.system("/bin/sh -c \"MYCMD\""),然后在终端中 运行 相同的 "/bin/sh -c \"MYCMD\"" 字符串。如果还有问题,那肯定是导出的问题(而且这个问题很有可能)。

要解决此问题,请在 python 和终端中尝试 printenv 以查看导出列表。你应该看到一个差异。格式很简单,因为您可以简单地复制终端 printenv 的输出(应该是一系列 declare),然后将其粘贴到 python 中,这样 python 就会得到相同的变量。然后你的“/bin/sh CMD”调用应该对齐。

包装的 /bin/sh 是为了以防它们 运行 使用不同的 shell 或具有不同的局部变量。 echo $SHELL可以证实这一点,此时你可以比较sets printenvs,同样复制粘贴。包装后您只需比较导出,因为这是传递给子进程的内容。

看起来 pycharm 没有从您的个人资料或 rc.尝试给出命令的绝对路径。

import os cmd = '/sbin/ifconfig -a' os.system(cmd)

您还可以使用以下方法验证您的路径。

print(os.environ['PATH'])

并使用以下内容将您的自定义路径添加到当前环境路径。

os.environ['PATH'] += ':/sbin'