Changer PYTHONPATH dans le shell
Je suis un tout nouveau utilisateur de Python et des scripts shell, et ont couru dans une impasse avec ce, même après Googler le problème et à se taper la tête contre le bureau beaucoup. Toute aide est appréciée!
Je suis en cours d'exécution Python 2.7.3 sur une coquille que j'ai SSH; j'ai téléchargé un code pour exécuter un certain nombre de programmes et d'analyses. Quand j'execute le programme initial, j'obtiens l'erreur suivante:
Traceback (most recent call last):
File "./[script1].py", line 7, in <module>
import [script1]
File "[directory]/[script].py", line 22, in <module>
import gdata.spreadsheet.service
ImportError: No module named gdata.spreadsheet.service
[Script 1] fait référence à un script python dans le même dossier qui est venu dans le cadre du code de package, et il appelle également les Données de Google paquet python, que j'ai téléchargés dans le même dossier et décompressés, le goudron, déballé et installé (avec le ./configurer, etc.) Basé sur la recherche de la erreurs, ma meilleure supposition est qu'il ya quelque chose de mal avec le PYTHONPATH ici, et il n'est pas de trouver [script1].py et de la Gdata dossier, même si les deux sont dans le même répertoire que le script que je suis en cours d'exécution. "Echo $PYTHONPATH" me dit que c'est une variable non définie, et il y a aussi un vide init.py fichier dans le répertoire. Il n'y a pas de fichiers contenant le mot "bash" ou "bashrc" n'importe où à l'intérieur de ce répertoire. De même, je n'arrive pas à trouver tout "sys.chemin d'accès des fichiers, bien que lorsque je démarre Python et print(sys.chemin d'accès), je reçois le résultat de sortie:
['',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-linux2',
'/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/PIL',
'/usr/lib/python2.7/dist-packages/gst-0.10',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-client',
'/usr/lib/python2.7/dist-packages/ubuntuone-installer',
'/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol',
'/usr/lib/python2.7/dist-packages/wx-2.8-gtk2-unicode']
J'ai aussi essayé de
export PYTHONPATH=[directory]
dans ma coquille, mais il crache "à l'exportation: command not found".
Veuillez pardonner un nouveau à tout cela - toute aide sur ce (ou non si mes soupçons sont corrects, et la façon de les résoudre) serait grandement apprécié!
Qui ne ressemble pas à la sortie complète du programme.
Eric, je suis en cours d'exécution CygWin pour faire un ssh sur un cluster sur mon université serveurs - est-il un moyen de savoir qui de la coquille à partir de là?
Et Croad, c'est la sortie complète du programme - il crache "Traceback: la plus récente du dernier appel:" suivi par les erreurs que j'ai collé sur. Merci!
Modifier votre réponse à inclure toute la sortie, ne pas les coller dans un commentaire parce que c'est difficile à lire.
OriginalL'auteur user2152303 | 2013-03-09
Vous devez vous connecter pour publier un commentaire.
Réglage PYTHONPATH
Par la sortie de la
export
commande vous avez essayé, ça ressemble à du shell que vous utilisez n'est pas bash. Ce post couvre quelques façons sur la façon de trouver le shell que vous utilisez. Après avoir trouvé votre coquille, vous pouvez trouver comment définir des variables d'environnement PYTHONPATH) dans ce shell.Vous pouvez également essayer ces pour définir le PYTHONPATH pour la durée de l'exécution de votre script (le dernier doit travailler (T)CSH):
et
Des essais que le PYTHONPATH vous définissez travaux
De voir que PYTHONPATH devient vraiment ensemble et travaille au sein de Python, au lieu d'exécuter le script comme ci-dessus avec
python script_name
, utilisezpython -c 'import os; print os.getenv("PYTHONPATH")'
. Il doit afficher le PYTHONPATH vous venez de définir.De même, l'impression
sys.path
interpréteur Python devrait sortir le chemin d'accès dans le PYTHONPATH comme l'une des entrées.Si PYTHONPATH est correctement réglé
Si vous avez réussi à configurer votre PYTHONPATH et que le problème persiste, essayez d'exécuter l'interpréteur Python à partir du chemin que vous avez gdata.
Dans l'interpréteur Python, essayer d'importer le module gdata:
Si cela fonctionne, essayez également d'importer le module qui provoque la
ImportError
:Si ces importations de travail à partir de l'interpréteur Python, il y a probablement quelque chose de mal avec votre [script1]. Si pas, essayez de confirmer que le module gdata est vraiment l'endroit où vous pensez qu'il est; le bon répertoire pour le module doit contenir un fichier nommé
__init__.py
et PYTHONPATH doit être configuré pour pointer vers le répertoire ci-dessus le module dans la hiérarchie.Salut, heureux d'avoir été de quelque secours. 🙂 On dirait que vous définissez le PYTHONPATH correctement maintenant et il y a une sorte de problème avec votre module gdata. Quel est le contenu de la gdata répertoire? Contient-il
__init___.py
? Python détecte les modules sur la base des répertoires de modules contenant un__init___.py
fichier.Il y a un (vide) init.py fichier situé dans le dossier, mais c'est un couple de dossiers profond à l'intérieur de gdata. J'ai essayé de réglage de la PYTHONPATH à ce sous-dossier trop à l'intérieur de gdata, avec le même résultat. Merci!
PYTHONPATH doit pointer vers le chemin juste au-dessus de l'une contenant
__init__.py
, c'est à dire si le__init__.py
fichier est dans /foo/dir1/dir2, PYTHONPATH doit être définie sur /foo/dir1 en conséquence. Espérons que cette aide!OK, qui semble avoir résolu le problème avec gdata - dans d'autres questions, mais ce n'est fixé. Merci beaucoup!!!
OriginalL'auteur miikkas