我有一些脚本(app.py
和app2.py
),我希望它们可以由父目录中的main.py
运行,也可以直接运行
项目结构:
main.py
package
├── __init__.py
├── app.py
├── helper.py
package2
├── __init__.py
├── app2.py
├── helper.py
main.py
from package import app
from package2 import app2
软件包/app.py
from .helper import greeting
greeting()
package/helper.py
def greeting():
print('hello')
package2/app2.py
from .helper import greeting
greeting()
package2/helper.py
def greeting():
print('hello in package 2')
当我运行main.py
时,它会被打印出来
hello
hello in package 2
这是正确的,但我不能直接运行package/app.py
,它将抛出错误attempted relative import with no known parent package
我在stackoverflow中找到的一个解决方案是将main.py
中的代码更改为:
import sys
sys.path.insert(0,'package')
sys.path.insert(0,'package2')
from package import app
from package2 import app2
然后移除app.py
和app2.py
中的点。现在我可以直接使用它们,但新问题是当我运行main.py
时,它会打印出来
hello in package 2
hello in package 2
这是错误的
另一种解决方案是改变app.py
和app2.py
以喜欢:
if __name__ == "__main__":
from helper import greeting
else:
from .helper import greeting
greeting()
它解决了我所有的问题,我只是想知道这是正确的方法吗
目前没有回答
相关问题 更多 >
编程相关推荐