Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

sys.path différent en ssh et paramiko

+3 votes

Je me connecte en ssh avec putty sur mon robot et je demande le PYTHON PATH :

>>sys.path

> ['', '/home/poppy/dev/poppy-torso/software',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python27.zip',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7/plat-linux2',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7/lib-tk',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7/lib-old',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7/lib-dynload',
> '/home/poppy/.pyenv/versions/2.7.9/lib/python2.7/site-packages']

Je me connecte sur le même robot en utilisant les librairies Paramiko et j'éxécute un script qui renvoi le PYTHON PATH :

import sys
print sys.path

et là je n'ai pas du tout les mêmes résultats :

 ['/home/poppy/notebooks', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-arm-linux-gnueabihf', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']\n"]

Ce qui explique que mes imports ne fonctionnent pas lorsque j'exécute un script à l'aide d'une commande ssh dans Paramiko.

Mais pourquoi donc un PYTHON PATH différent depuis Paramiko ???

demandé 24-Fev-2016 par jjehl (140 points)

Quasi certain que dans ton cas, paramiko ne load pas ton .bashrc / .bash_profile. Est-ce que tu peux tester cette commande:

bash -lc 'echo $PATH'

en te connectant avec paramiko et comparer ca avec ton $PATH sous putty?

1 Réponse

+2 votes

Putty :

poppy@dummy-poppy:~$ echo $PATH
/home/poppy/.pyenv/shims:/home/poppy/.pyenv/bin:/home/poppy/.pyenv/shims:/home/poppy/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Paramiko :

ssh.exec_command("bash -lc 'echo $PATH'")
[u'/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games\n']

Et oui, c'est pas pareil. En fait, j'ai fini par comprendre que le problème venait de l’environnent et du fait que Paramiko allait chercher une autre version de Python dans /usr/bin alors que Putty va la chercher dans /home/poppy/.pyenv/...

Donc je force Paramiko à prendre la bonne version avec un lien absolu :

ssh.exec_command("/home/poppy/.pyenv/versions/2.7.9/bin/python test_simple.py 5")

et ça marche.

répondu 25-Fev-2016 par jjehl (140 points)

Approuve la réponse si c'est bon, ça pourra aider les autres si ils atterrissent ici.

...