gpt4 book ai didi

python - 最佳实践 : how do you list required dependencies in your setup. py?

转载 作者:IT老高 更新时间:2023-10-28 21:37:46 25 4
gpt4 key购买 nike

这就是我目前的做法:

import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))

requires = [
'pyramid',
'pyramid_debugtoolbar',
'waitress',
'requests',
'mock',
'gunicorn',
'mongoengine',
]

setup(name='repoapi',
version='0.0',
description='repoapi',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=requires,
tests_require=requires,
test_suite="repoapi",
entry_points="""\
[paste.app_factory]
main = repoapi:main
""",
)

这是一个好的方法吗?我有一些麻烦。例如,对于金字塔,我不能使用系统范围的 nosetests 插件来运行测试。我需要在全局 python 站点包中安装 pyramid!

但我不希望那样。所以我必须在这个项目的virtualenv中安装nose。但我不希望它成为依赖项。我觉得它不应该属于 requires。它不是。然而,我也不想一直手动安装。是的,我知道我有很多我不想做这个和那个......

但是你将如何解决这个问题?我不想篡改全局 python 站点包,但我想将 Nose 安装为 virtualenv 的一部分。

另外,pip 安装要求文件。它稍微准确一点,因为我不需要手动指定版本,也不需要害怕手动更新 setup.py。只需抛出 pip freeze > file.txt 即可。

但是,pip 可以返回垃圾,因为我们将垃圾包扔到 virtualenv 中。

这么多 Blade 。最佳做法是什么?你如何处理这些问题?

也许我错过了,但是 https://github.com/django/django/blob/master/setup.py ,Django是怎么做到的?

最佳答案

您可以将您的需求拆分为“安装”依赖项和“测试”依赖项,如下所示:

import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))

install_requires = [
'pyramid',
'pyramid_debugtoolbar',
'waitress',
'requests',
'gunicorn',
'mongoengine',
]

tests_require = [
'mock',
'nose',
]

setup(name='repoapi',
...
install_requires=install_requires,
tests_require=tests_require,
test_suite="nose.collector",
...
)

这样,当有人安装包时,只安装“安装”依赖项。因此,如果有人只想使用该包(并且他们对运行测试不感兴趣),那么他们不必安装测试依赖项。

当你确实想运行测试时,你可以使用这个:

$ python setup.py test

根据 docs :

Note that these required projects will not be installed on the system where the tests are run, but only downloaded to the project’s setup directory if they’re not already installed locally.

一旦“test”依赖项就位,它将运行“test_suite”命令。由于您提到 Nose 是您首选的测试运行程序,我向您展示了 use "nose.collector"进行配置。

顺便说一句,Django setup.py 并不是了解 setuptools 基础知识的最简洁示例。我认为 Sentry setup.py是一个更好的学习例子。

关于python - 最佳实践 : how do you list required dependencies in your setup. py?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15422527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com