¿Cómo instalar un paquete de python local?

Pregunta

Instalé un paquete local llamado credentials usando

 pip install -ec:\users\worker\src\clockwork\lib\credentials 

Pero cuando bash importar el paquete desde un directorio hermano, falla con un ImporError:

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

Confusamente, las credentials del paquete aparecen como instaladas correctamente, como se muestra cuando ejecuto la pip list :

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

¿Cómo puedo instalar mi paquete local para que pueda ser importado?

Fondo

Estoy usando Python 3.4 (32 bits). El paquete contiene dos archivos:

 credentials\__init__.py credentials\setup.py 

El archivo __init__.py define una sola función. El archivo setup.py es corto:

 from distutils.core import setup setup(name='credentials', version='1.0.0') 

Solución

Actualmente agrego el directorio que contiene el paquete ( c:\users\worker\src\clockwork\lib ) a mi variable PATH como solución alternativa. Pero mi pregunta es cómo instalar el paquete correctamente para que no tenga que modificar el PATH .

El problema se centra en setup.py . Necesita declarar un paquete:

 from distutils.core import setup setup(name='credentials', version='1.0.0', packages=['credentials']) 

Pero este setup.py debe estar en el directorio principal del paquete de credentials , por lo que al final, la estructura del directorio es:

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

Con este cambio, el módulo se encuentra después de volver a instalar el paquete.

Esto también podría deberse a dos instalaciones de Python (pero no lo fue en mi caso), y @Mr_and_Mrs_D da una respuesta para ese caso.

Desinstale el paquete python y luego instálelo usando:

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

Lo que probablemente está sucediendo es que tiene varias instalaciones de Python y que se ejecuta pip desde una instalación mientras intenta usar el paquete desde otra. Ver también: