web-dev-qa-db-fra.com

Comment pip installer un package local python?

Question

J'ai installé un package local appelé credentials en utilisant

pip install -e c:\users\worker\src\clockwork\lib\credentials

Mais lorsque j'essaie d'importer le package à partir d'un répertoire frère, il échoue avec un ImporError:

cd c:\users\worker\src\clockwork\bank
python -c "import credentials"
...
ImportError: No module named 'credentials'

De façon confuse, le package credentials est répertorié comme installé avec succès comme indiqué lorsque j'exécute pip list:

...
credentials (1.0.0, c:\users\worker\src\clockwork\lib\credentials)
...

Comment puis-je installer mon package local afin qu'il puisse être importé?

Contexte

J'utilise Python 3.4 (32 bits). Le paquet contient deux fichiers:

credentials\__init__.py
credentials\setup.py

Le __init__.py le fichier définit une seule fonction. Le setup.py le fichier est court:

from distutils.core import setup

setup(name='credentials', version='1.0.0')

Solution

J'ajoute actuellement le répertoire contenant le package (c:\users\worker\src\clockwork\lib) à ma variable PATH comme solution de contournement. Mais ma question est de savoir comment installer le package correctement afin que je n'ai pas besoin de modifier le PATH.

14
expz

Le problème est centré sur setup.py. Il doit déclarer un package:

from distutils.core import setup

setup(name='credentials', version='1.0.0', packages=['credentials'])

Mais ça setup.py doit être dans le répertoire parent du package credentials, donc à la fin, la structure du répertoire est:

...\credentials\setup.py
...\credentials\credentials\__init__.py

Avec cette modification, le module est trouvé après la réinstallation du package.

Cela pourrait également être causé par deux Python installations (mais ce n'était pas mon cas), et @Mr_and_Mrs_D donne une réponse pour ce cas.

11
expz

Désinstallez le package python puis installez-le en utilisant:

python -m pip install -e c:\users\worker\src\clockwork\lib\credentials

Ce qui se passe probablement, c'est que vous avez plusieurs installations python et pip est exécuté à partir d'une installation pendant que vous essayez d'utiliser le package d'une autre. Voir aussi:

13
Mr_and_Mrs_D