¿Solo es posible si cambio el nombre del archivo? ¿O hay una variable __module__
en el archivo para definir cuál es su nombre?¿Cómo cambiar un nombre de módulo de Python?
Respuesta
Sí, debe cambiar el nombre del archivo. Lo mejor sería después de haber hecho eso para eliminar los archivos compilados oldname.pyc
y oldname.pyo
(si los hubiera) de su sistema, de lo contrario, el módulo también será importable bajo el nombre anterior.
Cada clase tiene una propiedad __module__
, aunque creo que cambiar esto no cambiará el espacio de nombres de la clase.
Si es posible, probablemente sea necesario usar setattr para insertar los métodos o clases en el módulo deseado, aunque se corre el riesgo de que el código sea muy confuso para sus futuros compañeros.
Su mejor opción es cambiar el nombre del archivo.
¿Dónde le gustaría tener esta variable __module__
, por lo que su secuencia de comandos original sabe qué importar? Los módulos se reconocen por nombres de archivo y se buscan en las rutas definidas en la variable sys.path
.
Por lo tanto, debe cambiar el nombre del archivo y luego eliminar el oldname.pyc
, solo para asegurarse de que todo funcione correctamente.
Si realmente desea importar el archivo 'oldname.py' con la afirmación 'importación newname', hay un truco que hace posible: el módulo de importación algún lugar con el nombre antiguo, y luego inyectarla en sys.modules
con el nuevo nombre. Las declaraciones de importación posteriores también lo encontrarán bajo el nuevo nombre. Ejemplo de código:
# this is in file 'oldname.py'
...module code...
Uso:
# inject the 'oldname' module with a new name
import oldname
import sys
sys.modules['newname'] = oldname
Ahora puede hacerlo en todas partes con su módulo import newname
.
No puedo pensar en una situación en la que me gustaría hacer eso, pero es genial que puedas :) – technomalogical
Una situación: un proyecto donde quieres compatibilidad con python 2.6 y 2.7, pero quieres usar algunos nuevos 2.7 funcionalidad unittest Este truco nos permite tener el código simplemente use 'import unittest 'mientras aún usamos la nueva funcionalidad, por lo que no tuvimos que modificar un montón de sentencias de importación cada vez que cambiamos la versión de Python. – Tobi
Puede cambiar el nombre usado para un módulo cuando se importan utilizando como:
import foo as bar
print bar.baz
Al hacer import module_name
el intérprete de Python busca un archivo module_name
.extension
en PYTHONPATH. Entonces no hay que cambiar ese nombre sin cambiar el nombre del archivo. Pero por supuesto que puede hacer:
import module_name as new_module_name
o incluso
import module_name.submodule.subsubmodule as short_name
útil, por ejemplo. para escribir el código DB
import sqlite3 as sql
sql.whatever..
Y luego, para cambiar por ejemplo. sqlite3
a pysqlite
acaba de cambiar la línea de importación
Tuve un problema como este con bsddb. Me vi obligado a instalar el módulo bsddb3 pero cientos de scripts importaron bsddb. En lugar de cambiar la importación en todos ellos, extraje el huevo bsddb3 y creé un enlace blando en el directorio site-packages para que tanto "bsddb" como "bsddb3" fueran uno igual a python.
- 1. conflicto de nombre de módulo de Python
- 2. Cómo cambiar el nombre de un archivo usando Python
- 3. ¿Cómo extiendo un módulo de Python? (python-twitter)
- 4. Cómo des-importar un módulo de Python?
- 5. ¿Cómo importo un módulo cuyo nombre entra en conflicto con un módulo de mi paquete?
- 6. Dado el nombre de un paquete de Python, ¿cuál es el nombre del módulo para importar?
- 7. Encuentra nombre de módulo de la excepción originario de Python
- 8. ¿Cómo cambiar el nombre de un directorio?
- 9. ¿Cómo cambiar una variable de módulo desde otro módulo?
- 10. Ruby: incluya un nombre de módulo dinámico
- 11. Python __future__ de un módulo específico
- 12. Python decapado después de cambiar el directorio de un módulo de
- 13. ¿Cómo obtengo el nombre del módulo de la definición de clase de un objeto en lugar del nombre del módulo de la instanciación del objeto?
- 14. ¿Cómo puedo documentar un módulo en Python?
- 15. Creación de un módulo de Python
- 16. Módulo de correo electrónico de Python: encabezado de formulario "De" con un nombre unicode + correo electrónico
- 17. python "módulo de cadena"?
- 18. descargar un módulo en Python
- 19. Obtenga solo un nombre de clase sin módulo, etc.
- 20. módulo Python con un guión o un guión (-) en su nombre
- 21. Múltiples clases en un módulo de Python
- 22. Error al instalar un módulo de python
- 23. diseño de módulo de python
- 24. extraer un módulo Python importada
- 25. python: nombrando un módulo que tiene un nombre de dos palabras
- 26. nombre del módulo ambiguo 'Preludio'
- 27. Obtener el nombre de clase de un módulo
- 28. importación de múltiples funciones de un módulo de Python
- 29. Operador de módulo en Python
- 30. TimedRotatingFileHandler ¿Cambiar nombre de archivo?
¿Cuál es el problema con el cambio de nombre del archivo? ¿Por qué el cambio de nombre no funciona? –
En realidad, era solo pereza ... No quería eliminar y volver a agregar el archivo en Launchpad. – Rodrigo