Почему $ PATH в пути удаленного развертывания отличается от $ PATH в удаленной системе? - PullRequest
0 голосов
/ 25 августа 2018

В настоящее время я работаю над Pycharm с удаленным интерпретатором Python (miniconda3 / bin / python).

Поэтому, когда я набираю 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 иВерсии питона совершенно разные!Как я могу это исправить?

Я уже пытался добавить 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, включающий библиотеку import, которая есть только в miniconda3, оболочка выдает 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

Похоже, что оболочка не понимает, как использовать модифицированный $ PATH.

1 Ответ

0 голосов
/ 25 августа 2018

Я нахожу решение.
Это не прямое, но довольно простое.
Я изменил os.system("python import_test.py") на os.system(sys.executable + ' import_test.py').

Это заставляет оболочку использовать удаленный интерпретатор Pycharm (miniconda3), а не оригинал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...