作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在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.
隐式导入是一种算法
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
谁能详细解释一下?
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'>
最佳答案
当你说:
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/
我是一名优秀的程序员,十分优秀!