python3模块的内部文件main()入口点

时间:2018-12-28 15:25:18

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

我创建了一个名为myutils的模块。这是我使用的文件结构:

./mypackages
./mypackages/myutils
./mypackages/myutils/util1.py
./mypackages/myutils/util2.py
./myexecs
./myexecs/user_executable1.py

我正确设置了PYTHONPATH=./

./myexecs/user_executable1.py中,我可以轻松使用utils:

from my_packages import myutils
myutils.util1.func1()

在util1.py中,我可以使用util2.py:

from . import util2
util2.func2() 

当我希望直接将util1.py用作主要入口点时,就会出现问题。它有一个

if __name__ == "__main__": main()

入口点,但是如果我直接执行它,它将无法导入util2(from . import util1失败)。

如果我使用python -m mypackages.myutils.util1执行它会成功

有什么主意,我该如何使util1使用from . import ...导入它的分支,而又能够直接从cmd执行它而不将其作为模块执行?

1 个答案:

答案 0 :(得分:0)

只需在代码中的任何地方使用abolute import(from . import util2将是from mypackages.myutils import util2),然后使用python -m myexecs.user_executable1运行exec,那么您会很好