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
你会很好
我创建了一个名为 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
你会很好