Je veux ajouter un chemin de bibliothèque spécifique uniquement à python2. Après avoir ajouté export PYTHONPATH="/path/to/lib/"
à mon .bashrc
, toutefois, l’exécution de python3 génère l’erreur suivante: Votre PYTHONPATH pointe sur un répertoire de paquets de sites pour Python 2.x mais vous utilisez Python 3.x!
Je pense que cela est dû au fait que python2 et python3 partagent la variable PYTHONPATH
commune.
Donc, puis-je définir différentes variables PYTHONPATH
respectivement pour python2 et python3. Si non, comment puis-je ajouter un chemin de bibliothèque exclusivement à une version particulière de python?
Vous pouvez créer un fichier de configuration mymodule.pth
sous lib/site-packages
(sous Windows) ou lib/pythonX.Y/site-packages
(sous Unix et Macintosh), puis ajoutez une ligne contenant le répertoire à ajouter au chemin d'accès python.
De docs.python2 et docs.python3 :
Un fichier de configuration de chemin est un fichier dont le nom a la forme
name.pth
et qui existe dans l’un des quatre répertoires mentionnés ci-dessus; son contenu est constitué d'éléments supplémentaires (un par ligne) à ajouter àsys.path
. Les éléments non existants ne sont jamais ajoutés àsys.path
et aucune vérification n'est faite quant au fait que l'élément se réfère à un répertoire plutôt qu'à un fichier. Aucun élément n'est ajouté àsys.path
plus d'une fois. Les lignes vides et les lignes commençant par # sont ignorées. Les lignes commençant parimport
(suivies d'un espace ou d'une tabulation) sont exécutées.
PYTHONPATH
est un peu un bidouillage en ce qui concerne la gestion des paquets. Une "jolie" solution consisterait à empaqueter votre bibliothèque et à installer.
Cela peut sembler plus délicat que ça, alors laissez-moi vous montrer comment ça marche.
Supposons que votre "paquet" ait un seul fichier nommé wow.py
et que vous le gardiez dans /home/user/mylib/wow.py
.
Créez le fichier /home/user/mylib/setup.py
avec le contenu suivant:
from setuptools import setup
setup(name="WowPackage",
packages=["."],
)
Ça y est, vous pouvez maintenant "installer" correctement votre paquet dans la distribution Python de votre choix sans avoir à vous soucier de PYTHONPATH
. En ce qui concerne "l'installation correcte", vous avez au moins trois options:
"Vraiment correct". Copiera votre code dans votre répertoire site-packages python:
$ python setup.py install
"Développement". Ajoutera seulement un lien depuis les paquets-sites python vers /home/user/mylib
. Cela signifie que les modifications apportées au code de votre répertoire auront un effet.
$ python setup.py develop
"Utilisateur". Si vous ne souhaitez pas écrire dans les répertoires système, vous pouvez installer le package ("correctement" ou "en mode de développement") dans le répertoire /home/user/.local
, dans lequel Python les trouvera également. Pour cela, ajoutez simplement --user
à la commande.
$ python setup.py install --user
$ python setup.py develop --user
Pour supprimer un paquet installé en mode développement, faites
$ python setup.py develop -u
ou
$ python setup.py develop -u --user
Pour supprimer un paquet "installé" correctement, faites
$ pip uninstall WowPackage
Si votre paquet est plus intéressant qu'un seul fichier (par exemple, vous avez des sous-répertoires et autres), listez-les simplement dans le paramètre packages
de la fonction setup
(vous aurez besoin de tout lister de manière récursive, vous utiliserez donc une fonction d'assistance pour les bibliothèques plus grandes ). Une fois que vous avez compris, assurez-vous de lire un manuel plus détaillé aussi.
En fin de compte, allez contribuer votre paquet à PyPI - c'est aussi simple que d'appeler python setup.py sdist register upload
(vous aurez cependant besoin d'un nom d'utilisateur PyPI).
J'ai constaté qu'il n'y avait aucun moyen de modifier PYTHONPATH
uniquement pour python2
ou uniquement pour python3
. Je devais utiliser un fichier .pth
.
Ce que je devais faire était:
$HOME/.local/lib/python${MAJOR_VERSION}.${MINOR_VERSION}/site-packages
.pth
dans ce répertoire .pth
fonctionnePour plus d'informations sur `.pth. la syntaxe des fichiers et leur fonctionnement, veuillez consulter: python2 docs et python3 docs .
(Fichiers .pth
en quelques mots: lorsque votre interprète python démarrera, il examinera certains répertoires et le fichier .pth
, ouvrira ces fichiers, analysera les fichiers et les ajoutera à votre sys.path
(le même comportement que PYTHONPATH
) modules python situés dans les répertoires disponibles pour une importation normale.)