假设我有一个具有以下结构的python包:
folder1
__init__.py
main.py
subfolder1
__init__.py
submain.py
subagent.py (contains class Agent)
subnetwork.py (contains class Network)在subagent.py文件中,我导入了Network类,在main.py和submain.py中,我导入了Agent类。我希望能够同时从main.py和submain.py启动我的程序。但是,这会在subagent.py文件中导致问题。如果我从main.py开始,我必须像这样在subagent.py中编写导入:
from subfolder1.subnetwork import Network 但是,如果我从submain.py开始,我必须在subagent.py中像这样编写导入:
from subnetwork import Network 有没有一个优雅的解决方案来解决这个问题?
发布于 2021-01-16 05:06:01
使用绝对导入,即以folder1:from folder1 import ...或import folder1开头。像这样给你的干线打电话:python -m folder1.main和python -m folder1.subfolder1.submain。
发布于 2021-01-15 18:57:41
可以使用try except blocks以两种方式导入
try:
from subnetwork import Network
except ModuleNotFoundError:
from subfolder1.subnetwork import Network 发布于 2021-01-15 19:02:09
是否更改工作目录?
import os
if __name__ == "__main__": # Only change the working directory if the file is run directly
os.chdir('..') # Move up a level so that it is the same as main
# now run the importshttps://stackoverflow.com/questions/65734734
复制相似问题