¿Hay alguna manera de importar módulos con dependencias dentro del mismo directorio utilizando una ruta absoluta/relativa con "imp"?¿Cómo importar módulos con dependencias en la misma ruta absoluta/relativa con imp?
Aquí sigue la estructura de directorios:
.
├── importFrom
│ ├── dependant.py
│ └── dependence.py
└── test.py
importaciones archivo test.py dependant.py usando:
modname=imp.load_source("testImp","importFrom/dependant.py")
que a su vez las importaciones dependence.py direcly con:
import dependence
Llamar a test.py da
Traceback (most recent call last):
File "test.py", line 3, in <module>
modname=imp.load_source("testImp","importFrom/dependant.py")
File "importFrom/dependant.py", line 1, in <module>
import dependence
ImportError: No module named dependence
Puede que valga la pena que load_source agregue la ruta del módulo cargado al cargador para que encuentre sus dependencias relativas automáticamente. Por ahora la única alternativa que he encontrado es la adición a la ruta del sistema, poniendo en test.py
Edición: He encontrado una forma mejor de hacer la importación en relación con la ruta, añade archivo para obtener el ruta absoluta de la persona que llama (la independencia del directorio de trabajo actual)
sys.path.append(os.path.join(os.path.dirname(__file__), 'importFrom'))
import dependant
Usando tup = imp.find_module ("dependiente", ["/ opt/importFrom /", "otro"]) imp.load_module ("dependiente", tup [0], tup [1], tup [2]) da el mismo error "Ningún módulo llamado dependencia". – a1an
También creo que no es factible con load_source a partir de Python 2.7, por lo tanto la respuesta correcta es "no factible", tiene que usar un enfoque de solución – a1an