![](/img/trans.png)
[英]When importing python script from another folder how to save output in the library/sub-folder
[英]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.