Tôi đang tự hỏi về cách thức chính xác/dễ nhất/nhiều nhất về giao dịch với các tiểu dự án mà bạn muốn sử dụng cùng một gói cơ sở. Chúng tôi hiện có một cấu trúc tập tin như thế này:Làm thế nào để quản lý một số tiểu dự án python với setuptools?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
Chúng tôi muốn giữ COMPANY_NAME namespace chung cho tất cả các dự án của chúng tôi (? Có lẽ đây chính là unpythonic) nhưng khi proj1 và proj2 được cài đặt trong chế độ phát triển, một trong những đầu tiên cài đặt bị hỏng. Có vẻ như import company_name...
bị nhầm lẫn với gói company_name nào cần xem và nó lấy gói đầu tiên/cuối cùng/ngẫu nhiên.
Điều này thường được xử lý như thế nào trong một dự án trăn lớn hơn? Có thể giải quyết vấn đề này với một setup.py trong thân cây để xây dựng một số loại mega-trứng không? Tôi đã không tìm thấy bất kỳ thông tin có liên quan trên google hoặc ngăn xếp, vì vậy bất kỳ thông tin ngay cả chỉ liên kết được đánh giá rất nhiều!
chỉnh sửa: Tôi chỉ cố gắng thêm một setup.py trong thư mục gốc với
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
với thích hợp pkg_resources.declare_namespace(__name__)
trong __init_.py
file, nhưng ./setup.py bdist_egg
chỉ cung cấp cho:
lỗi trong Lệnh thiết lập company_name: Phân phối không chứa mô-đun hoặc gói cho gói không gian tên 'company_name'
Đó là những gì tôi đã thiết kế từ khóa 'namespace_packages' cho, và vì vậy bạn thực sự đã làm đúng cách. –
Công ty của tôi bắt đầu sử dụng các gói không gian tên và nó đã trở thành một sai lầm lớn với rất nhiều chức năng bị hỏng với chúng có sẵn trong các dự án bình thường (chạy thử nghiệm đơn vị, cài đặt bị khó xử, v.v.). Chỉ là một lời cảnh báo. – Lucas