from example python import external python-module

example - import*python



Importar el módulo de python NO en la ruta (4)

Dale una oportunidad

import sys sys.path.append(''c:/.../dir/dir2'') import foo

Tengo un módulo foo, que contiene util.py y bar.py.

Quiero importarlo en la sesión IDLE o python. ¿Cómo hago esto?

No pude encontrar documentación sobre cómo importar módulos que no están en el directorio actual o en la RUTA predeterminada de python. Después de intentar import "<full path>/foo/util.py" , y from "<full path>" import util

Lo más cerca que podía estar era

import imp imp.load_source(''foo.util'',''C:/.../dir/dir2/foo'')

Lo cual me dio Permiso denegado en Windows 7.


Puede personalizar la ruta de búsqueda del módulo utilizando la variable de entorno PYTHONPATH o modificar manualmente la lista de directorios sys.path .

Consulte la documentación de la ruta de búsqueda del módulo en python.org.


Siguiendo la sugerencia de Phihag, tengo esta solución. Simplemente dé la ruta de un archivo fuente a load_src y lo cargará. También debe proporcionar un nombre, para que pueda importar este módulo con este nombre. Prefiero hacerlo de esta manera porque es más explícito:

def load_src(name, fpath): import os, imp return imp.load_source(name, os.path.join(os.path.dirname(__file__), fpath)) load_src("util", "../util.py") import util print util.method()

Otra forma (menos explícita) es esta:

util = load_src("util", "../util.py") # "import util" is implied here print util.method() # works, util was imported by the previous line

Editar: el método se reescribe para hacerlo más claro.


Una forma es simplemente modificar su path :

import sys sys.path.append(''C:/full/path'') from foo import util,bar

Tenga en cuenta que esto requiere que foo sea un paquete de Python, es decir, que contenga un archivo __init__.py . Si no desea modificar sys.path , también puede modificar la variable de entorno PYTHONPATH o instalar el módulo en su sistema . Tenga en cuenta que esto significa que otros directorios o archivos .py en ese directorio pueden cargarse inadvertidamente.

Por lo tanto, es posible que desee utilizar imp.load_source en imp.load_source lugar. Necesita el nombre de archivo, no un directorio (a un archivo que el usuario actual puede leer):

import imp util = imp.load_source(''util'', ''C:/full/path/foo/util.py'')