Đây là cách tôi làm điều đó hiện:Thực tiễn tốt nhất: cách bạn liệt kê các phụ thuộc bắt buộc trong setup.py?
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
""",
)
Đây có phải là một cách được không? Tôi có một số rắc rối. Ví dụ, đối với kim tự tháp, tôi không thể sử dụng plugin nosetests toàn hệ thống để chạy thử nghiệm. Tôi cần phải cài đặt pyramid
trong gói trang web trăn toàn cầu!
Nhưng tôi không muốn điều đó. Vì vậy, tôi phải cài đặt mũi trong virtualenv của dự án này. Nhưng tôi không muốn nó là một sự phụ thuộc. Tôi không cảm thấy nó thuộc về requires
. Nó không phải là. Tuy nhiên, tôi cũng không muốn cài đặt bằng tay mọi lúc. Vâng, tôi biết tôi có rất nhiều điều tôi không muốn làm điều này và ...
Nhưng bạn sẽ giải quyết điều đó như thế nào? Tôi không muốn làm xáo trộn các gói site python toàn cầu, nhưng tôi muốn cài đặt mũi như một phần của virtualenv.
Ngoài ra, tệp yêu cầu cài đặt pip. Nó chính xác hơn một chút vì tôi không cần phải chỉ định phiên bản theo cách thủ công và tôi không cần phải sợ cập nhật setup.py theo cách thủ công. Chỉ cần ném pip freeze > file.txt
và hoàn tất.
Tuy nhiên, pip có thể trả lại rác vì chúng tôi vứt gói rác vào virtualenv.
Rất nhiều lưỡi dao. Thực hành tốt nhất là gì? Làm thế nào để bạn đối phó với những vấn đề này?
Có thể tôi đã bỏ lỡ nó, nhưng https://github.com/django/django/blob/master/setup.py, Django đã làm như thế nào?
Cảm ơn bạn đã chia sẻ. Nhưng sẽ không thực sự được cài đặt vào virtualenv? Vì vậy, vào cuối ngày, các phương pháp hay nhất vẫn là tài liệu, vé lỗi để giữ cho setup.py được đồng bộ hóa? Cảm ơn. – CppLearner