我知道,相对进口不建议的,比如从PEP8报价:在开发Python模块时使用绝对导入?
Relative imports for intra-package imports are highly discouraged. Always use the absolute package path for all imports. Even now that PEP 328 is fully implemented in Python 2.5, its style of explicit relative imports is actively discouraged; absolute imports are more portable and usually more readable.
如果我开发包(带几个模块)是什么?在开发过程中,绝对导入不会在没有安装/部署软件包的情况下运行。这是否意味着我必须定期安装/部署当前的WIP模块才能进行测试?
以下是Cld提供的示例。给定一个Python项目/包:
myproject/
package1/
__init__.py
somemodule.py
package2/
__init__.py
somemodule.py
somescript.py
main.py
在main.py
,绝对进口工作得很好:
import package1
import package2.somescript
import package2.somemodule
然而,对于模块,例如somescript.py
在包2,以下绝对进口:
import package2.somemodule
import package1
这会引发ImportError:
Traceback (most recent call last):
File "package2/somescript.py", line 1, in <module>
import package2.somemodule
ImportError: No module named package2.somemodule
您可以采取的一种方法是将项目的根包含在“PYTHONPATH”环境变量中。然后,所有导入都可以是“绝对”的(即相对于项目的根源)。 – arghbleargh 2014-08-30 15:24:26
这可能是一个解决方案。 – Drake 2014-08-30 16:45:12