如何在 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
可以证实这一点,此时你可以比较set
s 和 printenv
s,同样复制粘贴。包装后您只需比较导出,因为这是传递给子进程的内容。
看起来 pycharm 没有从您的个人资料或 rc.尝试给出命令的绝对路径。
import os
cmd = '/sbin/ifconfig -a'
os.system(cmd)
您还可以使用以下方法验证您的路径。
print(os.environ['PATH'])
并使用以下内容将您的自定义路径添加到当前环境路径。
os.environ['PATH'] += ':/sbin'
我无法 运行 使用 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
可以证实这一点,此时你可以比较set
s 和 printenv
s,同样复制粘贴。包装后您只需比较导出,因为这是传递给子进程的内容。
看起来 pycharm 没有从您的个人资料或 rc.尝试给出命令的绝对路径。
import os
cmd = '/sbin/ifconfig -a'
os.system(cmd)
您还可以使用以下方法验证您的路径。
print(os.environ['PATH'])
并使用以下内容将您的自定义路径添加到当前环境路径。
os.environ['PATH'] += ':/sbin'