Cómo hacer que Anaconda Python encuentre tus scripts de Python – Modificando el PYTHONPATH

(La siguiente información se aplica sólo a las instalaciones de Anaconda. La idea básica se aplica a cualquier instalación de python, pero las formas precisas de abordar el tema son diferentes.)

Suponga que escribe un módulo de Python llamado, digamos, coolscript que tiene todo tipo de funciones geniales que usted escribió. Tal vez lo has guardado en el escritorio de tu ordenador. Tal vez entonces usted va a Anaconda Navigator, dispara Spyder u otro programa dentro de Anconda, y trata de importar esas funciones con una línea de código como,

from coolscript import *

Pero, por desgracia, recibe un error:

ModuleNotFoundError: No module named 'coolscript'

Muchas cosas podrían causar esto, pero tal vez es porque el directorio en el que coolscipt.py reside no es parte de la PYTHONPATH, es decir.e., el conjunto de directorios de archivos en los que Python busca los archivos que necesita. Averigüemos cuál es nuestro PYTHONPATH y veamos si contiene nuestro script. Inicie un Prompt de Anaconda. Puedes hacerlo directamente desde el menú Inicio en Windows o la aplicación Launcher en MacOS, pero otra forma de iniciarlo es lanzando el Navegador de Anaconda y lanzando una terminal como en la captura de pantalla de abajo:

Ahora, ejecuta este comando para ver tu PYTHONPATH:

python -c "import sys; print('\n'.join(sys.path))"

En mi caso, obtengo el siguiente resultado en una máquina personal basada en Windows con una instalación fresca de Anaconda3:

A menos que mi script esté en una de esas carpetas (o sus subcarpetas), no será encontrado por python a menos que indique explícitamente la ruta completa cuando lo llame desde python (o si inicia python en el directorio en el que reside el archivo). Lo ideal es evitar este problema instalando correctamente los módulos. Si es otra persona la que ha escrito el módulo de código, la mejor manera de hacerlo es instalarlo usando conda o, si eso no es posible, usando pip o un archivo setup.py. Estas son también las mejores prácticas para el código propio.

Sin embargo, a veces es útil tener un conveniente «directorio de trabajo» para el código temporal o inacabado, y puede que no quiera navegar por python a ese directorio cada vez que llame al código. Una forma de resolver este problema es añadir su directorio preferido a su PYTHONPATH.

Si queremos añadir temporalmente un directorio a nuestro python, podríamos simplemente ejecutar los siguientes comandos en el terminal de python que estamos utilizando para ejecutar el script:

import syssys.path.append(r'/path/to/my/package')

donde «/ruta/a/mi/paquete» debería cambiarse por la ruta de archivo a la carpeta que contiene su archivo de script de python. Este enfoque sólo funcionaría hasta que cerremos esa instancia del compilador de python; tendríamos que volver a ejecutarlo cada vez que iniciemos una línea de comandos de python.

Si queremos añadir de forma más permanente una carpeta a nuestro PYTHONPATH, podemos hacerlo creando un archivo .pth en el directorio site-packages. En la captura de pantalla anterior, observe la carpeta site-packages. Cada instalación de Anaconda debería tener una carpeta con ese nombre. Cree un nuevo archivo de texto en ese directorio, nombrándolo de tal manera que tenga la extensión de archivo .pth (por ejemplo, un archivo llamado extrapythonfolders.pth estaría bien). Dentro de ese archivo de texto, puede enumerar los directorios que desea incluir en su PYTHONPATH, uno por línea. Por ejemplo, en una máquina Windows podría añadir una línea que diga C:\myscripts. Guarde el archivo con estas nuevas ubicaciones, y luego intente de nuevo ejecutar el siguiente comando en el Prompt de Anaconda:

python -c "import sys; print('\n'.join(sys.path))"

Debería ver que sus nuevos directorios están ahora incluidos (aunque puede tener que reiniciar Anaconda para que funcione en todo su software). Usted debe ahora ser capaz de importar módulos o ejecutar el código de ese directorio, independientemente de donde se inicia python en su estructura de archivos.

Deja un comentario