これは私が現在行っている方法です:
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
""",
)
この方法でよろしいでしょうか?いくつか問題があります。たとえば、ピラミッドの場合、システム全体のノーズテスト プラグインを使用してテストを実行することはできません。pyramid
グローバルな python サイト パッケージにインストールする必要があります。
しかし、私はそれを望んでいません。だから私はこのプロジェクトのvirtualenvにnoseをインストールする必要があります。しかし、私はそれを依存関係にしたくありません。に属するべきだとは思わないrequires
。そうではありません。それでも、私はいつも手動でインストールしたくありません。ええ、私はこれをしたくないことがたくさんあることを知っています...
しかし、それをどのように解決しますか?グローバルな python サイト パッケージを改ざんしたくありませんが、nose を virtualenv の一部としてインストールしたいと考えています。
また、pip インストール要件ファイル。バージョンを手動で指定する必要がなく、setup.py を手動で更新することを恐れる必要がないため、わずかに正確です。投げるだけpip freeze > file.txt
で完成。
ただし、virtualenv にガベージ パッケージをスローするため、pip はガベージを返すことができます。
非常に多くのブレード。ベストプラクティスは何ですか? これらの問題にどのように対処しますか?
見逃したのかもしれませんが、https://github.com/django/django/blob/master/setup.py、Djangoはどのようにそれをしましたか?