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

111 投票
2 回答
69206 浏览
提问于 2025-04-17 06:28

在我的 setup.py 文件里,我列出了一些运行我的项目所需要的库:

setup(
    # ...
    install_requires = [
        'django-pipeline',
        'south'
    ]
)

我该怎么指定这些库的版本呢?

2 个回答

6

你可以把它们和版本信息一起添加到你的 requirements.txt 文件里。

比如:

django-pipeline==1.1.22
south>=0.7

然后在你的 setup.py 文件中:

import os
from setuptools import setup

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

setup(...
install_requires=required,
...)

根据文档的说明 -

使用 install_requires 来固定依赖包的具体版本,或者指定子依赖(也就是你的依赖包的依赖包),并不是最佳做法。这种做法限制太多,会让用户无法享受到依赖包升级带来的好处。

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

168

我不太确定关于buildout的事情,不过对于setuptools或distribute,你可以用比较符号来指定版本信息,比如==>=或者<=

举个例子:

install_requires = ['django-pipeline==1.1.22', 'south>=0.7']

可以查看一下Python打包文档

撰写回答