Escenario del proyecto:
En Linux, en la carpeta ActionWithPose\Net, para ejecutar ActionWithPoseM.py, debe llamar a DSTformer.py y transformador.py en la misma carpeta.
En AcciónConPoseM.py:
import sys
sys.path.append('../')
from ActionWithPose.Net.transformer import Transformer
from ActionWithPose.Net.DSTformer import DSTformer
Todavía recibo un error
ModuleNotFoundError: No module named 'ActionWithPose'
solución:
El terminal shell ejecuta el problema de la ubicación de py. Si ingreso a la carpeta Net, la ejecución informará un error.
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# python ActionWithPoseM.py
Traceback (most recent call last):
File "ActionWithPoseM.py", line 15, in <module>
from ActionWithPose.Net.transformer import Transformer
ModuleNotFoundError: No module named 'ActionWithPose'
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net#
Solo necesita salir de la carpeta de primer nivel y luego de otro nivel de ruta cuando se ejecuta Python.
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# cd ..
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose# python Net/ActionWithPoseM.py
……
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose#
Afectados por la ubicación del shell, los módulos introducidos en el código interno, la ruta relativa del archivo debe ser relativa a la ubicación de la ruta de ejecución
aprender por analogía
sys.path.append('../')
Lugar de ejecución correspondiente
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose# python Net/ActionWithPoseM.py
Si tuviera que entrar en la ejecución
(py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# python ActionWithPoseM.py
Entonces la ubicación del código correspondiente al módulo debe ser
sys.path.append('../../')
En la práctica, podemos aceptar ingresar al directorio raíz del archivo de código y escribir todos los archivos en relación con el directorio raíz del código, lo cual es conveniente para las pruebas principales y es consistente con otras llamadas de código.