0

原始问题标题:

我们应该在 setup.py 中使用 python 3.6 功能吗?

我为依赖于 python 3.6 的私有库安装程序创建了 setup.py。我试图让这个文件对任何试图在 python 版本上安装它的人更友好一点,并意识到我的想法有一个重大缺陷。

我在 setup.py 中使用了f-strings ,它只在 >=3.6 中工作

任何试图在以前版本的 python 中运行 setup.py 的人甚至都不会到达检查解释器版本的第一行代码。所以这让我想到了创建 setup.py 文件的指南以及可能存在哪些其他语法限制,这些限制会阻止 setup.py 在多个环境中正常运行。

#!/usr/bin/env python3

"""
PIP Install script for XXXXXX packages
"""
import sys
if sys.version_info < (3,6):
    sys.exit('Sorry, Python < 3.6 is not supported')

from setuptools import setup

NAME = 'abcutil'
AUTHOR = 'XXXXXXXXXX'

CLASSIFIERS = """\
Development Status :: 5 - Production/Stable
Intended Audience :: Developers
Programming Language :: Python
Programming Language :: Python :: 3
Topic :: Software Development
Operating System :: Microsoft :: Windows
Operating System :: Unix
Operating System :: MacOS
"""

MAJOR               = 1
MINOR               = 1
MICRO               = 0
ISRELEASED          = False
VERSION             = f'{MAJOR}.{MINOR}.{MICRO}'

setup(name = NAME,
      maintainer = AUTHOR,
      version=VERSION,
      maintainer_email = 'XXXXXXX',
      description='XXXXXXX utility packages',
      author = AUTHOR,
      download_url = 'https://gitlabXXXXXXXX/XXXXXXX',
      license = 'BSD',
      classifiers=[_f for _f in CLASSIFIERS.split('\n') if _f],
      python_requires=">=3.6",
      packages=[NAME, f"{NAME}.selenium", f"{NAME}.regression_helpers"],
      install_requires = ['selenium==3.9', 'requests>=2.18.4', 'python-dateutil', 'pytz'],
      dependency_links=['']
      )

运行上面的代码会给你这个:

$ python setup.py
  File "setup.py", line 30
    VERSION             = f'{MAJOR}.{MINOR}.{MICRO}'
                                                   ^
SyntaxError: invalid syntax

我的问题是

当使用仅限于较新版本的解释器功能时,对 setup.py 有什么建议?


编辑:

3.8.2 现已推出,这让我再次思考这个问题。所以我重新措辞了这个问题。

什么时候可以在 setup.py 脚本中使用来自 python 的后续次要版本更新的功能?

F-strings 是在 3.6 中添加的。什么时候可以在 setup.py 中开始使用它们?两个小版本?三?下一个主要版本?

4

0 回答 0