python - 为什么远程部署路径中的 $PATH 与远程系统中的 $PATH 不同?
问题描述
我目前正在使用远程 python 解释器(miniconda3/bin/python)开发 Pycharm。
所以当我输入echo $PATH
远程服务器时,它会打印
/home/woosung/bin:/home/woosung/.local/bin:/home/woosung/miniconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
我在 Pycharm 中创建了项目并将远程 python 解释器设置为 miniconda3 python,当我只运行一些*.py
文件时它运行良好。
但是当我输入一些行时os.system()
,发生了奇怪的事情。
例如,test.py
来自 Pycharm 项目
import os
os.system('echo $PATH')
os.system('python --version')
输出是
ssh://woosung@xxx.xxx.xxx.xxx:xx/home/woosung/miniconda3/bin/python -u /tmp/pycharm_project_203/test.py
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Python 2.7.12
Process finished with exit code 0
我在远程服务器上尝试了相同的命令,
woosung@test-pc:~$ echo $PATH
/home/woosung/bin:/home/woosung/.local/bin:/home/woosung/miniconda3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
woosung@test-pc:~$ python --version
Python 3.6.6 :: Anaconda, Inc.
PATH和python的版本完全不同!我怎样才能解决这个问题?
我已经尝试添加os.system('export PATH="$PATH:$HOME/miniconda3/bin"')
到test.py
. 但它仍然给出相同$PATH
的.( /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
)
编辑
感谢@Dietrich Epp 的评论,我成功地将解释器路径添加到shell $PATH。( os.environ["PATH"] += ":/home/woosung/miniconda3/bin"
)
但我遇到了更基本的问题。当我添加路径并执行命令时,一些*.py
文件包括import
仅在 miniconda3 中的库,shell 给出ImportError
.
例如,在test.py
import matplotlib
os.environ["PATH"] += ":/home/woosung/miniconda3/bin"
os.system("python import_test.py")
和import_test.py
import matplotlib
当我跑步时test.py
,
Traceback (most recent call last):
File "import_test.py", line 1, in <module>
import matplotlib
ImportError: No module named matplotlib
看起来 shell 不明白如何使用修改后的 $PATH。
解决方案
我找到了解决方案。
这不是直接的,但很简单。
我os.system("python import_test.py")
改为os.system(sys.executable + ' import_test.py')
.
这使得 shell 使用 Pycharm 远程解释器(miniconda3),而不是原始的。
推荐阅读
- ios - webView didFinish 导航不起作用并且活动指示器不会停止
- ios - SwipeCellKit:为什么从列表中删除一个项目,不更新 UITableview?
- sdk - snowflake.com / 意见 / sdk
- python - 试图将文本旋转 90
- python - AttributeError:“超级”对象在 Kivy 中没有属性“__getattr__”
- php - 按位置而不是键获取数组
- javascript - 有人可以用javascript解释我这个箭头函数吗?
- javascript - “无法读取未定义的属性‘indexOf’”
- powerbi - Dax 衡量标准:每周统计独特的文章
- c# - Unity:从大图到地图/地形/纹理