Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

requirements.txt depending on python version

Tags:

python

pip

I'm trying to port a python2 package to python3 (not my own) using six so that it's compatible with both. However one of the packages listed in requirements.txt is now included in the python3 stdlib and the pypi version doesn't work in python3 so I want to conditionally exclude it. Doing this in setup.py is easy, I can just do something like:

if sys.version_info[0] == 2:     requirements += py2_requirements else:     requirements += py3_requirements 

But I would like requirements.txt to reflect the correct list too. I can't find anything on this in the pip documentation. so does anyone know how to do it, or if it is even possible?

like image 279
aquavitae Avatar asked Oct 24 '13 07:10

aquavitae


People also ask

How does Requirements txt work Python?

In Python requirement. txt file is a type of file that usually stores information about all the libraries, modules, and packages in itself that are used while developing a particular project. It also stores all files and packages on which that project is dependent or requires to run. Typically this file "requirement.


1 Answers

You can use the environment markers to achieve this in requirements.txt since pip 6.0:

SomeProject==5.4; python_version < '2.7' SomeProject; sys_platform == 'win32' 

It is supported by setuptools too by declaring extra requirements in setup.py:

setup(     ...     install_requires=[         'six',         'humanize',     ],     extras_require={         ':python_version == "2.7"': [             'ipaddress',         ],     }, ) 

See also requirement specifiers. And Strings for the string versions of corresponding Python commands.

like image 176
Jiangge Zhang Avatar answered Sep 18 '22 17:09

Jiangge Zhang