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

python3 module's internal file main() entry point

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

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

我设置正确PYTHONPATH=./

./myexecs/user_executable1.py 我可以轻松使用实用程序:

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 执行它而不将其作为模块执行吗?

只要在你的代码中到处使用 abolute import(from . import util2 将是 from mypackages.myutils import util2)并且 运行 你的 exec 和 python -m myexecs.user_executable1 你会很好