Как я могу указать версию Python, используя setuptools?

Есть ли способ указать версию Python, которая будет использоваться с пакетом Python, определенным в setup.py?

Мой setup.py в настоящее время выглядит так:

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 = 'jon.reeve@gmail.com',
  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
  ''',
)

Это программа командной строки. Мой скрипт выполняется с использованием Python 3, но во многих операционных системах по-прежнему используется Python 2 по умолчанию. Как я могу указать версию Python для использования здесь? Кажется, я ничего не могу найти в документах, но, возможно, я не ищу нужное место?

1 ответ

Решение

С более новыми версиями setuptools (24.2.0 или выше) и более новые версии pip (9.0.0 или выше) вы можете использовать python_requires: https://packaging.python.org/tutorials/distributing-packages/

Python 3+:

python_requires='>=3',

Если ваш пакет предназначен для Python 3.3 и выше, но вы еще не готовы перейти на поддержку Python 4, напишите:

python_requires='~=3.3',

Если ваш пакет предназначен для Python 2.6, 2.7 и всех версий Python 3, начиная с 3.3, напишите:

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

Для старых версий старый ответ / обходной путь.

Вы можете вызвать ошибку или предупреждение, используя sys.version или же platform.python_version()

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

Или же:

import platform
print(platform.python_version())
Другие вопросы по тегам