现在我正在使用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+?该如何解决。
答案 0 :(得分:0)
以下结构应该起作用:
# 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 class移到另一个文件中,然后将其导入main.py和commit.py中。