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

时间:2019-04-15 14:47:22

标签: python python-3.x python-import

我有一些脚本(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

package / 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()

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

0 个答案:

没有答案