Pregunta

I have several python projects with different set of dependencies listed in pip requirements files. I've started to think about porting the code to python 3, but I need to know if my dependencies are already there.

Is it possible to check what packages from a requirements.txt file support python 3 and what don't?

Example requirements.txt contents:

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

From this list, only lxml supports python 3.


Just a side note.

There is a Python 3 Wall of Superpowers (python3wos project) that shows python 3 support of popular python packages.

As far as I understand, python3wos periodically parses the Python Package Index html pages and checks for the Programming Language :: Python :: 3 text to define whether a packages supports python 3rd branch or not. Isn't there anything simpler than scraping the html on PyPI?

¿Fue útil?

Solución

With the help of @thefourtheye and py3readiness.org sources, I've found exactly what I needed.

caniusepython3 module by Brett Cannon:

Determine what projects are blocking you from porting to Python 3

This script takes in a set of dependencies and then figures out which of them are holding you up from porting to Python 3.

Example (for the requirements.txt from the question):

$ 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

I should note that it still uses the same approach as python3wos - looking for Programming Language :: Python :: 3x classifiers on the package page.

There is also a web-interface where you can type your dependencies or drop a requirements.txt file.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top