如何在setup.py中指定库版本?

Naf*_*Kay 65 python buildout

在我的setup.py文件中,我已经指定了运行我的项目所需的一些库:

setup(
    # ...
    install_requires = [
        'django-pipeline',
        'south'
    ]
)
Run Code Online (Sandbox Code Playgroud)

如何指定这些库的必需版本?

Ada*_*ner 99

我不知道扩建,但是,对于setuptools的/分发,可以指定与比较运算符(如版本信息==,>=<=).

例如:

install_requires = ['django-pipeline==1.1.22', 'south>=0.7']
Run Code Online (Sandbox Code Playgroud)

  • Buildout尊重软件包的`install_requires`条目,包括版本要求.它使用引擎盖下的setuptools. (4认同)
  • 为了更好地理解 setup.py [阅读文档](http://docs.python.org/distutils/setupscript.html) (2认同)
  • 如何指定python的版本? (2认同)
  • @TarsisAzevedo 不幸的是,截至 2021 年 4 月,文档没有给出这些示例。该页面甚至没有提到“install_requires” (2认同)

Gal*_*cha 6

您可以将它们requirements.txt与版本一起添加到您的文件中。

例如:

django-pipeline==1.1.22
south>=0.7
Run Code Online (Sandbox Code Playgroud)

然后在你的setup.py

import os
from setuptools import setup

with open('requirements.txt') as f:
    required = f.read().splitlines()

setup(...
install_requires=required,
...)
Run Code Online (Sandbox Code Playgroud)

从文档中读取 -

install_requires使用将依赖项固定到特定版本或指定子依赖项(即依赖项的依赖项)不被认为是最佳实践。这是过度限制的,并且阻止用户获得依赖项升级的好处。

https://packaging.python.org/discussions/install-requires-vs-requirements/#id5