Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I specify a python version using setuptools? [duplicate]

Is there a way to specify a python version to be used with a python package defined in setup.py?

My setup.py currently looks like this:

from distutils.core import setup
setup(
  name = 'macroetym',
  packages = ['macroetym'], # this must be the same as the name above
  version = '0.1',
  description = 'A tool for macro-etymological textual analysis.',
  author = 'Jonathan Reeve',
  author_email = '[email protected]',
  url = 'https://github.com/JonathanReeve/macro-etym', 

  download_url = 'https://github.com/JonathanReeve/macro-etym/tarball/0.1', # FIXME: make a git tag and confirm that this link works
  install_requires = ['Click', 'nltk', 'pycountry', 'pandas',
                      'matplotlib'],
  include_package_data = True,
  package_data = {'macroetym': ['etymwm-smaller.tsv']}, 
  keywords = ['nlp', 'text-analysis', 'etymology'], 
  classifiers = [],
  entry_points='''
      [console_scripts]
      macroetym = macroetym.main:cli
  ''',
)

It's a command-line program. My script runs using Python 3, but a lot of operating systems still have Python 2 as the default. How can I specify a python version to be used here? I can't seem to find anything in the docs, but maybe I'm not looking in the right place?

like image 746
Jonathan Avatar asked May 13 '16 18:05

Jonathan


People also ask

What is __ version __ in Python?

Python __version__ Attribute Python contains many “Magic Methods/Attributes”. One of these is __version__ commonly called “Dunder version” because of the double underscore before and after version.

How do I check Python setuptools version?

To check which version of the Python library setuptools is installed, run pip show setuptools or pip3 show setuptools in your CMD/Powershell (Windows), or terminal (macOS/Linux/Ubuntu).

What is setuptools used for in Python?

Setuptools is a package development process library designed to facilitate packaging Python projects by enhancing the Python standard library distutils (distribution utilities). It includes: Python package and module definitions. Distribution package metadata.


1 Answers

With newer versions of setuptools (24.2.0 or above) and newer versions of pip (9.0.0 or above) you can use python_requires: https://packaging.python.org/tutorials/distributing-packages/#python-requires

Python 3+:

python_requires='>=3',

If your package is for Python 3.3 and up but you’re not willing to commit to Python 4 support yet, write:

python_requires='~=3.3',

If your package is for Python 2.6, 2.7, and all versions of Python 3 starting with 3.3, write:

python_requires='>=2.6, !=3.0.*, !=3.1.*, !=3.2.*, <4',

For older versions the old answer/workaround.

You can raise an error or warning using sys.version or platform.python_version()

import sys
print(sys.version)
print(sys.version_info)
print(sys.version_info.major)  # Returns 3 for Python 3

Or:

import platform
print(platform.python_version())
like image 174
Wolph Avatar answered Oct 13 '22 03:10

Wolph