Python __import __ () importazioni da 2 directory diverse quando esiste lo stesso modulo in 2 posizioni

StackOverflow https://stackoverflow.com/questions/4601185

  •  25-09-2019
  •  | 
  •  

Domanda

Ho un'applicazione Python, che ha una struttura di directory come questa.

-pythonapp
   -mainpython.py   
   -module1
      -submodule1
          -file1.py
          -file2.py

      -submodule2
           -file3.py
           -file3.py

      -submodule3
           -file1.py
           -file2.py
           -file5.py
           -file6.py
           -file7.py

Quando provo a importare le utility Python (da MainPython.py) in Submodule3, ottengo i 2 file iniziali da Submodule1. (Si noti che Submodule1 e 3 hanno 2 file diversi con lo stesso nome). Tuttavia, la stessa importazione funziona bene quando non vi è alcun conflitto, cioè importa correttamente il file 5,6,7 da Submodule3.

Ecco il codice:

name=os.path.splitext(os.path.split("module1\submodule3\file1.py")[1])[0] --> file1.py name here is passed dynamically. 

module = __import__(name) 

// Ecco il nome è come "file1" funziona (ma con il problema sopra, tuttavia, quando passa il nome del file dinamicamente), ma se passo il pacchetto completo come "module1.submodule1.file1" non riesce con un IMPORTERROR che dice che "nessun modulo con nome file1"

Ora la domanda è: come diciamo all'interprete di usare solo quelli sotto "module1.submodule3.file2"? Sto usando Python

Questo è davvero urgente e ho esaurito tutti i tentativi. Spero che alcuni sviluppatori di Python esperti possano risolverlo per me?

È stato utile?

Soluzione

Prova a creare pacchetti dalla tua directory avendo un vuoto __init__.py File in ciascuno e ogni volta che si desidera fare riferimento a un modulo particolare da un pacchetto utilizzando

from submodule import mymodule

Sintassi. La creazione di pacchetti è un buon modo per separare i moduli in diversi spazi dei nomi. E nomina i tuoi moduli in base alla sua funzionalità, non li hanno come file1, file2 ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top