Comment puis-je utiliser PYTHONPATH? Lorsque j'essaie d'exécuter un script dans le chemin, le fichier n'est pas trouvé. Lorsque je cd dans le répertoire contenant le script, le script s'exécute. Alors à quoi sert le PYTHONPATH?
$ echo $PYTHONPATH
:/home/randy/lib/python
$ tree -L 1 '/home/randy/lib/python'
/home/randy/lib/python
├── gbmx_html.py
├── gbmx.py
├── __init__.py
├── __pycache__
├── scripts
└── yesno.py
$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory
$ cd '/home/randy/lib/python'
Après le cd dans le répertoire de fichiers, il s'exécute.
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Pourquoi ne puis-je pas utiliser le PYTHONPATH?
PYTHONPATH
.PYTHONPATH
Réponses:
Je pense que vous êtes un peu confus. PYTHONPATH définit le chemin de recherche pour importer des modules python, pas pour les exécuter comme vous essayez.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
Ce que vous recherchez, c'est PATH.
Cependant, pour exécuter votre script python en tant que programme, vous devez également définir un shebang pour Python dans la première ligne. Quelque chose comme ça devrait fonctionner:
Et donnez-lui des privilèges d'exécution:
Ensuite, vous devriez pouvoir simplement courir
gmbx.py
de n'importe où.la source
export PATH=$PATH:/home/etc
Vous confondez PATH et PYTHONPATH. Vous devez faire ceci:
PYTHONPATH est utilisé par l'interpréteur python pour déterminer les modules à charger.
PATH est utilisé par le shell pour déterminer les exécutables à exécuter.
la source
PYTHONPATH
n'affecte que lesimport
instructions, pas la recherche de l'interpréteur Python de niveau supérieur des fichiers Python donnés en arguments.Le besoin
PYTHONPATH
d'être défini n'est pas une bonne idée - comme pour tout ce qui dépend de variables d'environnement, répliquer les choses de manière cohérente sur différentes machines devient difficile. Mieux vaut utiliser des 'packages' Python qui peuvent être installés (en utilisant 'pip' ou distutils) dans des chemins dépendants du système que Python connaît déjà.Lisez https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ - 'The Hitchhiker's Guide to Packaging', ainsi que http://docs.python.org/3/tutorial /modules.html - qui explique PYTHONPATH et les packages à un niveau inférieur.
la source
PYTHONPATH
. Je ne compte plus le nombre de fois où j'ai dû faire face à un programme Python rudimentaire qui insistait sur lepip install
fait que j'étais un utilisateur régulier sur un hôte non seulement sans accès root (je sais que pip peut faire une installation locale) mais également sans pip. Voici un conseil à tous ceux qui distribuent des logiciels Python - essayez d'abord d'installer votre propre logiciel sur un hôte Linux vanille où vous n'avez pas d'accès root et uniquement la distribution principale de Python sans pip.Je pense que vous êtes confondu entre PATH et PYTHONPATH. Tout ce que vous avez à faire pour exécuter un «script» est d'ajouter son répertoire parental à votre variable PATH. Vous pouvez tester cela en exécutant
De plus, si cela
myscripy.py
dépend de modules personnalisés, leurs répertoires parentaux doivent également être ajoutés à la variable PYTHONPATH. Malheureusement, comme les concepteurs de python étaient clairement sur les médicaments, tester vos importations dans la réplique avec ce qui suit ne garantira pas que votre PYTHONPATH est correctement défini pour une utilisation dans un script. Cette partie de la programmation python est magique et ne peut pas trouver de réponse appropriée sur stackoverflow.la source
Avec PYTHONPATH défini comme dans votre exemple, vous devriez pouvoir faire
-m
Cette option permettra à Python de rechercher votre module dans les chemins dans lesquels Python recherche généralement les modules, y compris ce que vous avez ajouté à PYTHONPATH. Lorsque vous exécutez l'interpréteur commepython gmbx.py
, il recherche un fichier particulier et PYTHONPATH ne s'applique pas.la source