python:subprocess.Popen,未找到openvpn命令
python:subprocess.Popen,未找到openvpn命令,python,path,subprocess,jupyter,Python,Path,Subprocess,Jupyter,OSX10.13.6Python3.6 我正在尝试从jupyter笔记本运行以下命令: 但是得到错误: sudo:openvpn:未找到命令 我所尝试的: 将export PATH=“/usr/local/sbin:$PATH”添加到我的~/.bash_配置文件中,并可以从我的终端运行sudo openvpn命令 编辑了我的sudoers文件,因此sudo不再提示输入密码 调用了sudo哪个openvpn,并尝试将/usr/local/sbin/openvpn添加到python中的my sy
OSX10.13.6
Python3.6
我正在尝试从jupyter笔记本运行以下命令:
但是得到错误:
sudo:openvpn:未找到命令
我所尝试的:
- 将
添加到我的~/.bash_配置文件中,并可以从我的终端运行export PATH=“/usr/local/sbin:$PATH”
命令sudo openvpn
- 编辑了我的sudoers文件,因此
不再提示输入密码sudo
- 调用了
,并尝试将sudo哪个openvpn
添加到python中的my sys.path/usr/local/sbin/openvpn
- 不拆分
并设置vpn\u cmd
shell=True
- 尝试将其打包到test.py脚本中并从终端执行,但它只是挂起在
行proc.communicate()
- 指定了
和--config
标志的完整路径--ca
到目前为止,还没有解决这个问题。我可以在我的终端上运行
openvpn
。这似乎是一个简单的路径问题,但我不知道需要向python路径添加什么。jupyter笔记本内核有什么特别之处吗?jupyter可能没有选择您的个人.bashrc
设置,这也取决于您运行它的方式。只需在Python脚本中硬编码路径或扩充路径
使用shell=False
时,不会展开波浪线;因此,您应该将它们更改为os.environ[“HOME”]
,或者确保您知道在哪个目录下运行此操作,并使用相对路径
如果run
可以满足您的要求,则不应使用Popen()
home = os.environ["HOME"]
r = subprocess.run(
['sudo', '/usr/local/sbin/openvpn',
'--config', home + '/Downloads/configs/ipvanish-US-Chicago-chi-a49.ovpn',
'--ca', home + '/Downloads/configs/ca.ipvanish.com.crt'],
stdout=PIPE, stderr=PIPE, universal_newlines=True)
print(r.stdout)
Jupyter可能没有选择您的个人.bashrc
设置,这也取决于您运行它的方式。只需在Python脚本中硬编码路径或扩充路径
使用shell=False
时,不会展开波浪线;因此,您应该将它们更改为os.environ[“HOME”]
,或者确保您知道在哪个目录下运行此操作,并使用相对路径
如果run
可以满足您的要求,则不应使用Popen()
home = os.environ["HOME"]
r = subprocess.run(
['sudo', '/usr/local/sbin/openvpn',
'--config', home + '/Downloads/configs/ipvanish-US-Chicago-chi-a49.ovpn',
'--ca', home + '/Downloads/configs/ca.ipvanish.com.crt'],
stdout=PIPE, stderr=PIPE, universal_newlines=True)
print(r.stdout)
非常感谢,就这样。很高兴了解run vs Popen,我会仔细阅读的。当然,也许是upvote和/或accept?顺便说一句,这里有一个关于Popen vs run和相关问题的更详细的答案:对不起,我确实尝试过投票,但它说我的声誉太低了。我能接受它,尽管非常感谢,我做到了。很高兴了解run vs Popen,我会仔细阅读的。当然,也许是upvote和/或accept?顺便说一句,这里有一个关于Popen vs run和相关问题的更详细的答案:对不起,我确实尝试过投票,但它说我的声誉太低了。不过我还是接受了