Python не может найти модуль при использовании SSH - PullRequest
5 голосов
/ 28 июля 2011

Я использую Python на серверах.Когда я запускаю команду python, для которой требуется модуль numpy, если я сделаю

ssh <server name> <python command>

, этот сервер будет жаловаться, что модуль numpy не найден.

Однако, если я сначалаssh на этот сервер с помощью

ssh <server name>

, затем запустите команду python на этом сервере

<python command>

все будет в порядке.

Это означает, что сервер уже установленnumpy module , и он просто не может найти модуль без моего входа в него.

Есть предположения, в чем может быть проблема?

Спасибо

Добавить:

извините за то, что забыл упомянуть, что результат, полученный при запуске

ssh <server name> which python
ssh <server name> echo $PYTHONPATH
ssh <server name> echo $PYTHONUSERBASE
ssh <server name> echo $LD_LIBRARY_PATH

, такой же, как при первом подключении ssh к серверу

ssh <server name>

затем выполните эти команды

which python
echo $PYTHONPATH 
echo $PYTHONUSERBASE
echo $LD_LIBRARY_PATH

Ответы [ 5 ]

1 голос
/ 19 февраля 2015

При запуске cmd над ssh в одной строке .profile не читается.Чтобы проверить, попробуйте это:

ssh host env

Используйте это вместо этого, чтобы решить эту проблему (кавычки обязательны):

ssh host '. ~/.profile; cmd'

например:

ssh <server name> '. ~/.bashrc; <python command>'
1 голос
/ 28 июля 2011

Я нашел проблему.Это действительно проблема пути к питону.

И причина, по которой я этого не нашел, состоит в том, что вместо того, чтобы

ssh <server name> echo $PYTHONPATH

найти все модули поиска Python для поиска патчей

мы должны сделать

ssh <server name> 'echo $PYTHONPATH'

мы не можем игнорировать кавычку для проверки переменной PYTHONPATH на сервере

1 голос
/ 28 июля 2011

Да. Это также означает, что в .bashrc вашего пользователя есть что-то конкретное, что модифицирует $PATH, чтобы вы могли получить доступ к дополнительным модулям. Лично мне не нравится изменять путь на глобальном уровне, поэтому я предложу подход Python: call sys.path.append('/path/to/numpy')

0 голосов
/ 22 января 2019

Была такая же проблема и попробовал все выше.

Для меня сработало изменение удаленных команд с python на полный путь.

т.е.

1) SSH на вашем пульте, узнайте, где находится ваш питон, через

2) измените команду с python pyscript.py на remote/path/to/python pyscript

0 голосов
/ 28 июля 2011

Проверьте и убедитесь, что вы используете ту же среду Python.При входе в систему вы можете использовать такой файл, как / usr / bin / python, и, возможно, использовать другую установку, такую ​​как / usr / local / bin / python, при попытке удаленного запуска.

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