Solucionar problema de módulo no encontrado

Esto me ha vuelto a pasar hoy , tengo un módulo en desarollo y quiero importar el módulo fuera de un directorio donde tengo acceso directo al módulo. Pues una opción es instalar el módulo para que el interprete sepa que hay un módulo con ese nombre, y la otra es agregar la ruta desde la que se puede acceder a ese módulo en la lista de sys.path

import os
import sys
self_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append("{}/../../".format(self_path))

Funciona bien bien

python requirements using git

En algunos proyectos actualmente estoy usando un repo de git como dependencia, ya sea por que es un repo privado o por que no está disponible en pypi.

Cómo se indica una dependencia en requirements.txt:

git+https://github.com/jsenin/pythondependency.git#egg=module
git+https://github.com/jsenin/pythondependency.git@<branch>#egg=module
git+https://github.com/jsenin/pythondependency.git@<commit_hash>#egg=module

Hay que tener en cuenta que si es una dependencia que vamos a editar tenemos que instalarla con ‘-e’

-e git+https://github.com/jsenin/pythondependency.git#egg=module

Para instalar las dependencias usamos pip

pip install -r requirements.txt

Otra forma de instalar estos paquetes es usando setup.py y dependencias. Bien, hay que tener en cuenta que usando el típico script setup.py que usa setuptools (distutils están obsoletas)  instala dependencias y tiene dos modos: python setup.py install y python setup.py develop. La diferencia es que install instala los paquetes sin que sean editables y con develop sí son editables. Además no se genera el wheell ( paquete de instalación ) cosa que con pip sí se hace, con lo que la desintalación es sencilla usando el propio pip. Por otro lado las setuptools generan directorios egg que habrá que borrar a mano si queremos desinstalar. 

Existe una opción de borrar los paquetes instalados con setuptools en modo develop

python setup.py develop --uninstall