检查 Python 3 支持的要求。

19

我有几个Python项目,每个项目都列有不同的依赖项,这些依赖项在pip requirements文件中列出。我已经开始考虑将代码移植到Python 3,但我需要知道我的依赖项是否已经支持Python 3。

是否可以检查requirements.txt文件中的软件包哪些支持Python 3,哪些不支持?

requirements.txt文件的示例内容:

mysql-python==1.2.5
lxml==3.3.4
Fabric==1.8.0

从这个列表中,只有lxml支持Python 3。


顺便说一句。

有一个Python 3超级大本营墙python3wos 项目),显示了流行的Python程序包的Python 3支持情况。

据我所知,python3wos定期解析Python Package Index HTML页面,并检查是否存在Programming Language :: Python :: 3文本以确定软件包是否支持Python第三分支。难道没有更简单的方法来获取PyPI上的信息吗?


3
http://py3readiness.org/ 还可以用来检查流行软件包的Python 3兼容性。 - thefourtheye
1
@thefourtheye,你提出了一个非常好的观点。我发现了py3readiness.org的资源,我认为我找到了我需要的东西。我将继续回答自己的问题,但是给你应该是公平的 - 只要告诉我你是否会回答。谢谢! - alecxe
1
你的回答详细而且不错。我只会给你点赞 :) - thefourtheye
1
人们可能会认为,如果软件包支持Python 3,则以下步骤应该有效:1. 激活py3虚拟环境2. pip安装<packagename>。我尝试在py3 venv上安装Fabric==1.8.0,它成功地安装了。只有当我执行from fabric.context_managers import *时,它才出现问题。pypi和pip需要解决这个问题。你不会知道在运行时你的软件包是否与你的Python版本兼容。 - srj
@srj 严格来说,你是正确的。但是包主页上的 Python :: 3x 分类器是设计成我们可以依赖的东西。只有在开始使用它之后,你才会真正知道它是否与 3.x 兼容。谢谢。 - alecxe
1个回答

26

在@thefourtheye和py3readiness.org的帮助下,我找到了我需要的东西。

Brett Cannon的caniusepython3模块:

确定哪些项目阻止您迁移到Python 3

此脚本接受一组依赖项,然后确定哪些依赖项阻止您迁移到Python 3。

示例(针对问题中的requirements.txt):

$ caniusepython3 -r requirements.txt 
Finding and checking dependencies ...

You need 2 projects to transition to Python 3.
Of those 2 projects, 2 have no direct dependencies blocking their transition:

  fabric
  mysql-python

我应该指出,它仍然使用与python3wos相同的方法-在包页面上查找Programming Language :: Python :: 3x分类器。 此外,还有一个web-interface,您可以在其中键入您的依赖项或放置一个requirements.txt文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接