请考虑以下目录结构:
project/
scripts/
a1.py
a2.py
start.py
start.py
依赖于a1.py
,而a1.py
使用some_func
中存在的称为a2.py
的函数。此外,a1.py
也是一个独立的脚本,可以独立调用。现在出现两种情况:
案例1 :(独立脚本) 我将如下导入some_func
from a2 import some_func
案例2 :(从start.py
呼叫)
from scripts.a2 import some_func
我的问题:将两个用例结合起来的有效方法是什么?
可能的解决方案?:是否建议这样做?
if __name__ == "__main__":
from a2 import some_func
elif __name__ == "start":
from scripts.a2 import some_func
注意:我正在使用python 3.x
答案 0 :(得分:1)
Python的方式是根据您的代码创建一个包,然后在您的代码中使用包内引用:https://docs.python.org/3/tutorial/modules.html
from . import some_func # from scripts in same folder
from .scripts import some_func # from start.py
另外,打包并安装解决方案后,您将能够使用绝对路径(来自软件包名称),例如:
# this will work from anywhere
from mypackage.scripts import some_func