gpt4 book ai didi

python - 什么是 Python 隐式相对导入

转载 作者:太空狗 更新时间:2023-10-29 17:06:30 26 4
gpt4 key购买 nike

PEP 8 -- Style Guide for Python Code

Explicit relative imports are an acceptable alternative to absolute imports

Implicit relative imports should never be used and have been removed in Python3.

什么是 Python 隐式相对导入?

隐式导入是一种算法

Search up from current package directory until the ultimate package parent gets hit.
-- From https://www.python.org/dev/peps/pep-0328/#rationale-for-relative-imports

谁能详细解释一下?

在 Python3 中被移除了?

python2 -c 'import csv; print(csv)'
<module 'csv' from '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/csv.pyc'>

$ touch csv.py

$ python2 -c 'import csv; print(csv)'
<module 'csv' from 'csv.pyc'>

# In python3 still search from current package
$ python3 -c 'import csv; print(csv)'
<module 'csv' from '/path_to/csv.py'>

为什么 pep-0008 建议不要使用它?

最佳答案

当你说:

import foo

Python 2 会首先在调用者的目录中查找。 Python 3 不会那样做,只会在通常的地方找到 foo,比如 sys.path (PYTHONPATH, site-packages 等)。

这意味着如果你正在编写一个支持 Python 3 的包,你应该在你的包中这样说:

import mypkg.foo

或者使用显式相对导入:

from . import foo

关于python - 什么是 Python 隐式相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716943/

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