这就是我目前的做法:
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 插件来运行测试。我需要安装pyramid
在全局 python 站点包中!
但我不想那样。所以我必须在这个项目的virtualenv中安装nose。但我不希望它成为依赖项。我觉得它不应该属于requires
. 它不是。然而,我也不想一直手动安装。是的,我知道我有很多我不想做这个和那个...
但是你会怎么解决呢?我不想篡改全局 python 站点包,但我想将鼻子安装为 virtualenv 的一部分。
此外,pip install 要求文件。它稍微准确一点,因为我不需要手动指定版本,也不需要害怕手动更新 setup.py。扔就pip freeze > file.txt
完成了。
但是,pip 可以返回垃圾,因为我们将垃圾包扔到 virtualenv 中。
这么多刀片。最佳做法是什么?你如何处理这些问题?
也许我错过了,但是https://github.com/django/django/blob/master/setup.py,Django 是怎么做到的?