在已安装的 Python 包中导入
Imports within an installed Python package
考虑安装的 Python 包的以下目录结构:
project/
project/
__init__.py
file1.py
file2.py
module/
__init__.py
file3.py
setup.py
为了从 file1.py
访问 file2.py
中的函数,可以做
from file2 import fun
或
from project.file2 import fun
类似地,如果我想从 file1.py
访问 file3.py
中的函数,我可以执行 from project.module.file3 import function
或 from .module.file3 import function
.
这两个选项似乎是等价的。是否有首选方法,或者我缺少的两者之间的相关差异?
尽管这主要是个人喜好问题,PEP8 建议使用绝对导入:
from project.module.file3 import function
而不是相对进口:
from .module.file3 import function
绝对导入更具可读性和更好的行为(失败时更好的错误消息)。但是,当使用绝对导入变得不必要地冗长时(根据您的判断),使用相对导入是一个可以接受的替代方案。请参阅有关导入的 PEP8 documentation。
考虑安装的 Python 包的以下目录结构:
project/
project/
__init__.py
file1.py
file2.py
module/
__init__.py
file3.py
setup.py
为了从 file1.py
访问 file2.py
中的函数,可以做
from file2 import fun
或
from project.file2 import fun
类似地,如果我想从 file1.py
访问 file3.py
中的函数,我可以执行 from project.module.file3 import function
或 from .module.file3 import function
.
这两个选项似乎是等价的。是否有首选方法,或者我缺少的两者之间的相关差异?
尽管这主要是个人喜好问题,PEP8 建议使用绝对导入:
from project.module.file3 import function
而不是相对进口:
from .module.file3 import function
绝对导入更具可读性和更好的行为(失败时更好的错误消息)。但是,当使用绝对导入变得不必要地冗长时(根据您的判断),使用相对导入是一个可以接受的替代方案。请参阅有关导入的 PEP8 documentation。