python testing module import

¿Cómo probar si se ha importado un módulo de Python?



testing module (3)

Si desea optimizar al no importar cosas dos veces, ahórrese la molestia porque Python ya se ocupa de esto.

Si necesita esto para evitar NameErrors o algo así: NameErrors su codificación descuidada: asegúrese de no necesitar esto, es decir, defina (importe) todo antes de usarlo (en el caso de importar: una vez, al inicio, a nivel de módulo) )

En caso de que tenga una buena razón: sys.modules es un diccionario que contiene todos los módulos ya importados en alguna parte. Pero solo contiene módulos, y debido a la forma from <module> import <variable> (importa todo el módulo como siempre, extrae los elementos que importas de él), from sys import path solo agregarías sys a sys.modules ( si no fue importado al inicio). from pkg import module agrega pkg.module como probablemente esperas.

¿Cómo probar si un módulo ha sido importado en Python?

por ejemplo, necesito lo básico:

if not has_imported("sys"): import sys

además

if not has_imported("sys.path"): from sys import path

¡Gracias!

Rgs.

Gracias por todos sus comentarios: el código ha sido pegado aquí. Importe automáticamente todos los submódulos en una carpeta y luego invoque las mismas funciones de nombre. Python runtime inspeccionar relacionado


Siento que la respuesta que se ha aceptado no es del todo correcta.

Python todavía tiene sobrecarga al importar el mismo módulo varias veces. Python lo maneja sin darle un error , claro, pero eso no significa que no ralentizará su script. Como verá en la siguiente URL, hay una sobrecarga significativa al importar un módulo varias veces.

Por ejemplo, en una situación en la que puede que no necesite un determinado módulo, excepto bajo una condición particular, si ese módulo es grande o tiene una sobrecarga alta, entonces hay razones para importar solo con la condición. Eso no significa explícitamente que seas un codificador descuidado tampoco.

https://wiki.python.org/moin/PythonSpeed/PerformanceTips#Import_Statement_Overhead


from sys import modules try: module = modules[module_name] except KeyError: __import__(''m'')

¡esta es mi solución para cambiar código en tiempo de ejecución!