我目前正在使用远程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()
行时,发生了奇怪的事情。
例如,在Pycharm项目的test.py
中
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的注释,我成功地将解释器路径添加到外壳$ PATH中。
(os.environ["PATH"] += ":/home/woosung/miniconda3/bin"
)
但我坚持了更基本的问题。当我添加路径并执行命令时,某些*.py
文件(包括仅位于miniconda3中的import
库)将由外壳提供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。
答案 0 :(得分:0)
我找到了解决方法。
它不是直接的,但非常简单。
我将os.system("python import_test.py")
更改为os.system(sys.executable + ' import_test.py')
。
这使外壳程序使用Pycharm远程解释器(miniconda3),而不是原始的。