Para generalizar mi comprensión de su objetivo, desea poder importar paquetes personalizados utilizando import custom_package_name
sin importar desde dónde llame python y sin importar dónde se encuentra su secuencia de comandos python.
Una serie de respuestas mencionan lo que voy a describir, pero creo que la mayoría de las respuestas asumen muchos conocimientos previos. Trataré de ser tan explícito como pueda.
Para lograr el objetivo de permitir que los paquetes personalizados se importen a través de la declaración import
, tienen que ser detectables en algún lugar a través de la ruta que utiliza python para buscar paquetes. Python en realidad usa múltiples rutas, pero solo nos enfocaremos en la que se puede encontrar combinando la salida de sys.prefix
(en su intérprete de python) con /lib/pythonX.Y/site-packages
(o lib/site-packages
si está usando Windows) donde X.Y es su versión de python.
Concretamente, encontrar el camino que utiliza su pitón ejecutando:
import sys
your_path = sys.prefix + '/lib/pythonX.Y/site-packages'
print(your_path)
Este camino debe ser algo como /usr/local/lib/python3.5/site-packages
si estás usando Python 3.5, pero podría ser muy diferente dependiendo de su configuración.
Python usa esta ruta (y algunas otras) para encontrar los paquetes que desea importar. Entonces, lo que puede hacer es colocar sus paquetes personalizados en la carpeta /usr/local/lib/python3.5/site-packages
. No olvide agregar un archivo init .py a la carpeta.
Para ser concretos de nuevo, en el tipo de terminal:
cd your_path
cp path_to_custom_package/custom_package ./
Ahora usted debería ser capaz de importar todo el paquete personalizado como lo haría si el paquete estaba situada en el mismo directorio (es decir import package.subpackage
para cada archivo subpaquete en tu paquete debería funcionar).
Y el resultado fue ¿qué? ¿Estás planeando aceptar una respuesta? –
Aceptaré una respuesta una vez que haya probado el código, lo cual no haré por unas semanas. No veo ninguna prisa en particular. – DavidM
¿Qué código probó? Como he tratado de señalar con un ejemplo, y como uno o dos otros también han mencionado, lo que dices que hiciste debería funcionar y está documentado que solo funciona. En lugar de "intentar el código", díganos [como he sugerido] la información elemental que debería haber sido incluida con su pregunta (plataforma, versión de Python, rastreo completo y mensaje de error) además de la depuración elemental que sugerí ... unos minutos de tu tiempo; seis personas "corrieron" para darte una respuesta. –