paquetes - Forzar el módulo de importación desde la biblioteca estándar de Python en lugar del predeterminado PYTHONPATH
lista de modulos de python (4)
Tengo un módulo personalizado en uno de los directorios de mi PYTHONPATH con el mismo nombre que uno de los módulos de biblioteca estándar, de modo que cuando import module_name
, ese módulo se carga. Si quiero usar el módulo de biblioteca estándar original, ¿hay alguna manera de forzar a Python a importar desde la biblioteca estándar en lugar de hacerlo desde el directorio PYTHONPATH, sin renombrar el módulo personalizado y cambiar cada referencia para apuntar al nuevo nombre?
La solución ideal sería cambiar el nombre de su módulo a algo que no esté en la biblioteca estándar.
También puedes cambiar las importaciones absolutas si estás en Python 2.5+:
from __future__ import absolute_import
No lo hagas
Si accidentalmente ha elegido un nombre de módulo de biblioteca estándar, cambie el nombre de su módulo para finalizar el conflicto.
Puede seleccionar el módulo que desea importar con el módulo imp:
import imp
mymodule = imp.load_module(name, file, pathname, description)
La mejor manera de hacerlo es poner su proyecto en un directorio digamos "myproject" que reside en:
/home/me/myproject
Cree un enlace simbólico al directorio myproject a una de las rutas de Python predeterminadas, por ejemplo:
# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject
Ahora cuando quieras importar un módulo dentro de tu proyecto, simplemente abre un intérprete de Python.
>>> from myproject.mymodule import *
Funcionará como un encanto.
Una última cosa, no nombre su proyecto igual que los que se encuentran en la ruta de Python, por lo que no tendrá problemas durante la importación.