Вот как я это делаю сейчас:
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 этого проекта. Но я не хочу, чтобы это была зависимость. Я не чувствую, что он должен принадлежать requires
. Это не так. Тем не менее, я также не хочу устанавливать вручную все время. Да, я знаю, что у меня много, я не хочу этого делать и что...
Но как бы вы это решили? Я не хочу вмешиваться в глобальные пакеты сайта python, но я хочу установить нос в качестве части виртуального.
Кроме того, файлы требований для установки пакета. Это немного более точно, потому что мне не нужно указывать версию вручную, и мне не нужно бояться обновлять setup.py вручную. Просто бросьте pip freeze > file.txt
и сделайте.
Однако, pip может возвращать мусор, потому что мы бросаем мусорные пакеты в virtualenv.
Так много лезвий. Какая лучшая практика? Как вы справляетесь с этими проблемами?
Возможно, я пропустил это, но https://github.com/django/django/blob/master/setup.py, как это сделал Django?