python包相对导入陷阱

当python 使用包导入时

如果在文件中使用了相对路径,那么随着运行方式不一样有的作为主文件直接运行,有的作为包导入这两种情况下,相对路径可能会发生错误

}

对于 Python 的包内导入即包内模块导叺包内模块,存在绝对导入和相对导入问题编码

from mon_util import setup 的语句,若是有一天要更改 common_util 包(文件夹)的名字那么会影响全部相关的代码。而采用楿对导入就没有这个问题

不过,绝对导入更清晰若是包不是特别复杂,不是特别易变那么仍是建议采用绝对导入。(我的观点仅供參考)

再举一个包内导入的例子,目录结构为

}

请考虑使用distutils/setuptools使您的项目可以用Python标准方式安装(提示:您需要创建一个设置.py文件平行于'foo'目录,也称为包)

这样做还可以让您使用许多常见的Python测试框架(nose,py.测试以使收集和运行测试成为可能,其中大多数这样的框架在运行测试之前自动确保“foo”是一个可导入的包你的测试_有用.py测试可以导入'很有用“没問题。在

从示例目录结构中还值得注意的是似乎通常建议您的测试目录不是Python包。i、 删除test/init.py文件该框架将确保测试是可运行的,而不是将其作为一个包将有助于确保它只在源代码发行版中分发而不是在二进制发行版(可能不需要的地方)中分发

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信