modulenotfounderror - ImportError: Ningún módulo llamado-Python
modulenotfounderror no module named ''matplotlib'' windows (5)
Para que la importación del módulo de Python funcione, debe tener "src" en su ruta, no "gen_py / lib".
Al procesar una importación como la import gen_py.lib
, busca un módulo gen_py
, luego busca un submódulo lib
.
Como el módulo gen_py
no estará en "../gen_py/lib" (estará en ".."), la ruta que agregó no ayudará en nada al proceso de importación.
Dependiendo de dónde lo está ejecutando, intente agregar la ruta relativa a la carpeta "src". Tal vez sea sys.path.append(''..'')
. También puede tener éxito ejecutando el script mientras está dentro de la carpeta src directamente, a través de rutas relativas como python main/MyServer.py
Tengo una aplicación de Python con la siguiente estructura de directorio:
src
|
+---- main
|
+---- util
|
+---- gen_py
|
+---- lib
En el paquete principal , tengo un módulo de Python llamado MyServer.py que tiene una instrucción de importación como:
from gen_py.lib import MyService
Para que esta afirmación funcione, coloqué la siguiente línea al comienzo de MyServer.py :
import sys
sys.path.append(''../gen_py/lib'')
Cuando ejecuto MyServer.py en el terminal, aparece el siguiente error:
ImportError: Ningún módulo llamado gen_py.lib
¿Qué me falta aquí?
from ..gen_py.lib import MyService
o
from main.gen_py.lib import MyService
Asegúrese de tener un archivo __init__.py
(al menos vacío) en cada directorio.
Su modificación de sys.path
supone que el directorio de trabajo actual siempre está en main/
. Este no es el caso. En su lugar, simplemente agregue el directorio padre a sys.path
:
import sys
import os.path
sys.path.append(os.path.join(os.path.dirname(__file__), ''..''))
import gen_py.lib
No olvide incluir un archivo __init__.py
en gen_py y lib; de lo contrario, no se reconocerán como módulos de Python.
asegúrese de incluir __init__.py
, lo que hace que Python sepa que esos directorios contienen paquetes
Esto es si está creando un paquete y está encontrando un error en las importaciones. Lo aprendí de la manera más difícil. La respuesta es no agregar el paquete a la ruta de Python o hacerlo programáticamente (¿qué pasa si tu módulo se instala y tu comando lo vuelve a agregar?), Eso es una mala manera.
Lo correcto es: 1) Usar virtualenv pyvenv-3.4 o algo similar 2) Activar el modo de desarrollo - $ python setup.py desarrollar