导入:我希望脚本可以由其他文件运行,也可以直接运行

2024-06-08 18:07:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些脚本(app.pyapp2.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.pyapp2.py中的点。现在我可以直接使用它们,但新问题是当我运行main.py时,它会打印出来

hello in package 2
hello in package 2

这是错误的

另一种解决方案是改变app.pyapp2.py以喜欢:

if __name__ == "__main__":
    from helper import greeting
else:
    from .helper import greeting

greeting()

它解决了我所有的问题,我只是想知道这是正确的方法吗


Tags: infrompyimporthelperapppackagehello