在PEP 8 -- Style Guide for Python Code
显式相对导入是绝对导入的可接受替代方法永远不应使用隐式相对导入,并且已在Python3中删除 .
什么是Python隐式相对导入?
隐式导入是一种算法
从当前包目录中搜索,直到最终包父命中 . - 来自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'>
1 回答
当你说:
Python 2将首先在调用者的目录中查找 . Python 3不会这样做,只会在
sys.path
(PYTHONPATH
,site-packages
等)的常用位置找到foo
.这意味着如果您正在编写支持Python 3的软件包,您应该在软件包中说明:
或使用显式相对导入: