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



我无法使用 PyCharm 运行系统调用,也无法弄清楚要更改哪些变量或环境设置。

给定这个简单的脚本:

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

。在终端的命令行中运行良好,产生以下错误:

sh: ifconfig: command not found

这发生在我尝试运行的任何进程中,例如 CSVSQL、PSQL 等。

我已经尝试过:在命令行显示我的 python 解释器路径,我尝试将它们添加到 PyCharm 解释器路径中,但无济于事。

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

我正在运行Linux Mint 19,尽管这适用于我的Windows安装(PATH输出有很大不同)。

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

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

对于未来的问题(我遇到了):

检查它是否是导出的环境变量的一种快速方法是运行os.system("/bin/sh -c "MYCMD""),然后在终端中运行相同的"/bin/sh -c "MYCMD""字符串。如果仍然存在问题,那么它一定是导出(这是可能的问题)。

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

包装/bin/sh是以防它们运行不同的 shell 或具有不同的局部变量。echo $SHELL可以确认这一点,此时您可以比较setsprintenvs,并以相同的方式复制粘贴。包装后,您只需要比较导出,因为这是传递给子进程的内容。

看起来 pycharm 没有从您的个人资料或 rc 获取路径。尝试提供命令的绝对路径。

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

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

print(os.environ['PATH'])

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

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

最新更新