gpt4 book ai didi

python - Python 中的条件相对导入 ... 做还是不做?

转载 作者:太空宇宙 更新时间:2023-11-04 06:27:03 24 4
gpt4 key购买 nike

给定以下包:

testpackage
__init__.py
testmod.py
testmod2.py

__init__.py的内容

from . import testmod
from . import testmod2

testmod.py的内容

# relative import without conditional logic, breaks when run directly
from . import testmod2
...
if __name__ == '__main__':
# do my module testing here
# this code will never execute since the relative import
# always throws an error when run directly

testmod2.py的内容

if __name__ == 'testpackage.testmod2':
from . import testmod
else:
import testmod
...
if __name__ == '__main__':
# test code here, will execute when the file is run directly
# due to conditional imports

这不好吗?有没有更好的办法?

最佳答案

那以后肯定会成为维护的头疼问题。不仅仅是条件导入...更多的原因为什么你必须进行条件导入,即运行 testpackage/testmod2.py 作为主脚本导致sys.path 的第一个条目是 ./testpackage 而不是 .,这使得 testpackage 作为一个包 走开。

相反,我建议通过 python -m testpackage.testmod2 运行 testmod2,并从 testpackage 外部进行。 testpackage.testmod2 仍将显示为 __main__,但条件导入将始终有效,因为 testpackage 始终是一个包。

-m 的问题在于它需要 Python 2.5 or newer .

关于python - Python 中的条件相对导入 ... 做还是不做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7184663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com