13.2 外部库

你的头号敌人就是所依赖的外部库。如果你读了我在2.3节(外部库)中的建议并且参考了我的检查表,在这里你就不会遇到麻烦了。因为那个检查表已经包含了对Python 3支持的需求。不过,可能你很早就开始了自己的项目并且已经犯了这个错误。

遗憾的是,对于这个问题没有什么特别的好办法。但幸运的是,如果你参考了我的其他建议,将外部库进行足够的隔离以避免其扩散到整个代码库,则是可以考虑替换它的。事实上,如果某个库不太可能支持Python 3的话,那么这可能是最好的办法。不过,中小型的库比大的框架更容易移植到Python 3,所以你可能需要对它们做一点儿尝试。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

在寻找PyPI上的包时,可以查看它的收藏分类符"Programming Language :: Python :: 2""Programming Language :: Python :: 3",它指明了包所支持的Python版本。不过,要注意的是它们可能不是最新的。

在OpenStack项目早期所做出的关于外部库的一个选择就是eventlethttps://github.com/eventlet/eventlet),一个并发网络库。它不支持Python 3,而且仍然试图支持Python 2.5(可以想象,这不利于移植)。这个决定是OpenStack在很早之前做出的,当时还没有进行任何的Python 3兼容性检查。我们已经意识到这个模块在未来会是个大问题,但截止到目前,如何解决还没有具体的计划。

千万别犯同样的错误!