Python: utilizando módulos descargados

Soy nuevo en Python y en su mayoría usé mi propio código. Pero ahora descargué un paquete que necesito para algún problema que tengo.

Estructura de ejemplo:

root\ externals\ __init__.py cowfactory\ __init__.py cow.py milk.py kittens.py 

Ahora el __init__.py de __init__.py hace from cowfactory import cow . Esto da un error de importación.

Podría arreglarlo y cambiar la statement de importación from externals.cowfactory import cow pero algo me dice que hay una forma más fácil ya que no es muy práctica.

Otra solución podría ser poner el paquete cowfactory en la raíz de mi proyecto, pero eso tampoco es muy ordenado.

Creo que tengo que hacer algo con el archivo __init__.py en el directorio externo, pero no estoy seguro de qué.

Dentro del paquete de fábrica, las importaciones relativas se deben utilizar, por ejemplo, from . import cow from . import cow El archivo __init__.py en las __init__.py externas no es necesario. Suponiendo que su proyecto se encuentra en root \ y cowfactory es el paquete externo que descargó, puede hacerlo de dos maneras diferentes:

  1. Instale el módulo externo

    Los paquetes externos de Python generalmente vienen con un archivo “setup.py” que le permite instalarlo. En Windows, sería el comando “setup.py bdist_wininst” y obtendría un instalador EXE en el directorio “dist” (si se comstack correctamente). Use ese instalador y el paquete se instalará en el directorio de instalación de Python. Después, simplemente puede realizar una import cowfactory al igual que lo haría con el sistema import cowfactory import os .

    Si tiene instalado pip o easy_install: muchos paquetes externos se pueden instalar con ellos (pip incluso permite una fácil desinstalación).

  2. Utilice PYTHONPATH para el desarrollo

    Si desea mantener todas las dependencias juntas en el directorio de su proyecto, mantenga todos los paquetes externos en la carpeta externals \ y agregue la carpeta a PYTHONPATH. Si está utilizando la línea de comandos, puede crear un archivo por lotes que contenga algo como

     set PYTHONPATH=%PYTHONPATH%:externals yourprogram.py 

    En realidad estoy haciendo algo similar, pero usando PyDev + Eclipse. Allí, puede cambiar las “Configuraciones de ejecución” para incluir la variable de entorno PYTHONPATH con el valor “externos”. Después de configurar la variable de entorno, simplemente puede import cowfactory en sus propios módulos. Tenga en cuenta que es mejor que hacerlo from external import cowfactory ya que en este último caso, ya no funcionará una vez que instale su proyecto (o tendría que instalar todas las dependencias externas como un paquete llamado “externo”, lo cual es una mala idea). ).

Las mismas soluciones, por supuesto, también se aplican a Linux, pero con diferentes comandos.

en general, usaría easy_install nuestro pip para instalarlo en el directorio apropiado. Hay un directorio de site-packages en Windows donde puede colocar el paquete si no puede usar easy_install por alguna razón. En ubuntu, es /usr/lib/pythonX.Y/dist-packages . Google para su sistema particular. O puede ponerlo en cualquier lugar en su variable de entorno PYTHONPATH .

Como regla general, es bueno no incluir bibliotecas de terceros en la estructura del directorio de sus progtwigs (aunque existen diferentes opiniones al respecto con respecto al control de la fuente). Esto mantiene su estructura de directorio lo más minimalista posible.

La forma más fácil es usar la variable de entorno $ PYTHONPATH. Lo establece antes de ejecutar sus scripts de la siguiente manera:

 export $PYTHONPATH=$PYTHONPATH:/root/externals/ 

Puede agregar tantas carpetas como desee (siempre y cuando estén separadas por:) y python buscará en todas esas carpetas al importar.