J’ai ceci dans mon ~/.profile
:
export PYTHONPATH=/home/dev/python-files
Dans le répertoire python-files
, j’ai quelques projets clonés à partir de git-hub (flask, curvehip et py-vgdl).
Chaque fois que j’essaie de démarrer l’un des exemples de ces projets, des erreurs similaires aux suivantes se produisent:
$ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py Traceback (most recent call last): File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in from vgdl.core import VGDLParser ImportError: No module named vgdl.core
Il me semble que je ne devrais pas avoir cette erreur car j’ai cette variable d’environnement PYTHONPATH
configurée?
Exécution de l’interpréteur interactif python:
>>> import os >>> os.environ["PYTHONPATH"] '/home/dev/python-files'
Essayez d’append à PYTHONPATH au lieu de l’écraser complètement.
export PYTHONPATH=$PYTHONPATH:/home/dev/python-files
Les références:
Selon la documentation Python sur PYTHONPATH
Augmentez le chemin de recherche par défaut pour les fichiers de module. […]
Le chemin de recherche par défaut dépend de l’installation, mais commence généralement par le
prefix/lib/pythonversion
(voirPYTHONHOME
ci-dessus). Il est toujours ajouté àPYTHONPATH
.
ce qui signifie que certaines valeurs existent dans PYTHONPATH
et que le chemin de recherche par défaut est également uniquement ajouté.
De plus, cet article de blog ( lien Archive.org ) explique clairement pourquoi vous devez append à PYTHONPATH
et non l’écraser. Faire défiler la liste jusqu’à la section – Cas spéciaux et examiner le chemin de recherche l’ explique clairement (malheureusement, aucune URL relative à ce lien ne vous oblige à faire défiler). Bien que l’utilisateur donne les exemples sur un Mac, ils sont très pertinents pour n’importe quelle plate-forme
PYTHONPATH
doit indiquer où se trouvent vos packages et modules Python, et non pas où se trouvent vos extractions. En d’autres termes, si vous faites un ls "$PYTHONPATH"
vous devriez voir les fichiers *.py
( modules Python ) et les répertoires contenant les fichiers __init__.py
( paquets Python ).
Donc, si vous voulez pouvoir import vgdl
, votre PYTHONPATH
devrait ressembler à ceci:
PYTHONPATH=/home/dev/python-files/py-vgdl
parce que le paquet vgdl
trouve dans py-vgdl
, et non dans python-files
.
Pour append également les autres chemins, vous pouvez utiliser :
pour les séparer:
PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"
Cela fonctionnera cependant dans de tels cas, l’utilisation de PYTHONPATH
peut s’avérer trop complexe. Ce que je recommande, c’est d’utiliser virtualenv
, qui est conçu express pour simplifier des situations comme la vôtre. Ce que vous devez faire est fondamentalement:
virtualenv env
source env/bin/activate
pip
ou le script setup.py
de vos paquets. Je ne donne pas beaucoup d’informations car virtualenv est bien documenté et si vous avez besoin d’aide pour quelque chose, vous feriez mieux de poser une nouvelle question
Vous pouvez également faire ce qui suit:
export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}
pwd est le répertoire de travail actuel.