簡體   English   中英

如何從另一個文件夾和子文件夾導入python文件

[英]How to import python-file from another folder and sub-folder

現在,我正在使用Python 3.6.8,現在我被導入文件卡住了。 沒用

├── db
│   ├── commit.py
│   ├── config.py
│   ├── database.ini
│   └── __init__.py
└── main.py

這是我的代碼結構。 對於每個文件,

#commit.py 

from config import config 

class Commit():
     #many function
     #some process. Which use package from config
#config.py 

class config():
    #some process.
#database.ini 
#It's text file 
#__init__.py 
import commit 
import config
#main.py 

from db import commit 
from db import config 

class Main():
    #many function
    #include calling commit function 

if __name__=="__main__":
   #work with main function 

但是我的程序仍然錯誤。 當我運行main.py時,這是錯誤消息。

db/__init__.py", line 1, in <module>
import commit
ModuleNotFoundError: No module named 'commit'

為什么它不起作用? 因為是Python 3+? 如何解決這個問題。

以下結構應該起作用:

# main.py
from db.commit import *
from db.config import *

class Main():
   #many function
   #include calling commit function 

if __name__== "__main__":
   #work with main function

我想您需要從提交和配置文件中導入所有內容。 但是,如果只需要Commit類或config類,則可以修改如下代碼:

from db.commit import Commit
from db.config import config

然后其他文件

# init.py
# no imports

從init.py中刪除導入

# config.py
class config():
    #some process.

config.py就像您的版本一樣

# commit.py
from .config import *

class Commit():
    #many function
    #some process. Which use package from config

這樣應該可以正常工作。

評論后編輯

如果從main.py導入了commit.py模塊中包含的函數,並且在commit.py模塊中導入了main.py模塊中包含的函數,則將進行循環導入。

為了修復它,您應該以其他方式組織項目結構。
例如,您可以將Main類移動到另一個文件中,然后將其導入main.py和commit.py中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM