2016-05-13 93 views
1

有沒有一種方法可以指定一個python版本與setup.py中定義的python包一起使用?如何使用setuptools指定python版本?

我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 = '[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 
    ''', 
) 

這是一個命令行程序。我的腳本使用Python 3運行,但很多操作系統仍然默認使用Python 2。我怎樣才能指定一個Python版本在這裏使用?我似乎無法在the docs中找到任何東西,但也許我沒有找到正確的地方?

+0

是否需要* * *蟒3?如果是這樣,你可以檢查文件運行時的當前版本並拋出錯誤。 – jonrsharpe

回答

2

隨着setuptools的更新版本(24.2.0或以上)和PIP的新版本(9.0.0或以上),你可以使用python_requireshttps://packaging.python.org/tutorials/distributing-packages/#python-requires

的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.versionplatform.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()) 
+0

這是不正確的:使用python_requires ='> = 3'。請參閱https://packaging.python.org/tutorials/distributing-packages/#id52 – Bananach

+0

感謝@Bananach,我添加了解釋 – Wolph

相關問題