110 votes

Où dois-je placer mon propre module python pour qu'il puisse être importé ?

J'ai mon propre paquet en python et je l'utilise très souvent. Quel est le répertoire le plus élégant ou le plus conventionnel où je dois placer mon paquet pour qu'il soit importé sans jouer avec PYTHONPATH ou sys.path ?

Qu'en est-il des packs de sites, par exemple ? /usr/lib/python2.7/site-packages .
Est-il courant en python de copier et coller le paquet à cet endroit ?

71voto

mata Points 22446

Je place généralement les éléments que je veux avoir prêts à être importés dans le répertoire du site de l'utilisateur :

~/.local/lib/pythonX.X/site-packages

Pour afficher le bon répertoire pour votre plateforme, vous pouvez utiliser python -m site --user-site


edit : il apparaîtra dans sys.path une fois que vous l'avez créé :

mkdir -p "`python -m site --user-site`"

32voto

arie64 Points 322

Si vous êtes novice comme moi et que vos répertoires ne sont pas très bien organisés, vous pouvez essayer cette méthode.

Ouvrez votre terminal python. Importez un module dont vous savez qu'il fonctionne, comme numpy dans mon cas, et faites ce qui suit. Import numpy

numpy.__file__

ce qui entraîne

'/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages/numpy/__init__.py'

Le résultat de numpy.__file__ est l'emplacement où vous devez placer le fichier python avec votre module (à l'exception du fichier numpy/__init__.py ) donc pour moi ce serait

/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages

Pour cela, il suffit d'aller dans votre terminal et de taper

mv "location of your module" "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site- packages"

Vous devriez maintenant être en mesure d'importer votre module.

9voto

srj Points 399

C'est quelque chose qui fonctionne pour moi (je dois fréquemment créer des paquets python qui sont téléchargés dans un dépôt pip privé). Je développe le commentaire de @joran sur la question.

  1. créer un "répertoire de construction" qui est utilisé comme espace de travail pour créer des paquets. n'importe quel répertoire de votre choix fera l'affaire
  2. Copiez-y votre répertoire de paquets python, et créez un fichier setup.py. ce devrait aider à créer le setup.py correctement.
  3. créer un virtualenv pour le projet sur lequel vous travaillez. Les virtualenvs ont un tas d'autres avantages, je ne vais pas entrer dans les détails ici.
  4. créer un paquet dist local python setup.py sdist --format=tar . le paquet créé doit idéalement se trouver dans le répertoire dist dossier.
  5. Installez le paquet sur votre virtualenv (après l'avoir activé). pip install <yourpackage>.tar

vous pouvez utiliser pip install --force-reinstall si vous avez besoin de jouer avec les bibliothèques et de recréer les paquets dist.

J'ai constaté que cette méthode fonctionne très bien pour moi. Si vous n'avez pas besoin d'empaqueter les modules pour les utiliser sur d'autres systèmes que votre système local, cette méthode peut être excessive.

Bon piratage.

2voto

AA Shakil Points 21

Si vous développez un module, je vous recommande de suivre cette procédure.

import sys
sys.path.append("/home/mylinux/python-packages")

Maintenant, tout module que vous gardez dans python-packages est importable par Python-interpreter .

1voto

Testing123 Points 126

Sur mon Mac, j'ai fait un sudo find / -name "site-packages" . Cela m'a donné quelques pistes comme /Library/Python/2.6/site-packages , /Library/Python/2.7/site-packages y /opt/X11/lib/python2.6/site-packages .

Ainsi, je savais où placer mes modules si j'utilisais la v2.7 ou la v2.6.

J'espère que cela vous aidera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X