2011-01-29 25 views
7

Tôi đang cố gắng chuyển đổi hoàn toàn để xây dựng - nhưng môi trường phát triển của chúng tôi đã có nhiều nội dung được cài đặt trong /usr/lib/pythonxx/Làm cách nào để đảm bảo trình xây dựng không sử dụng các gói đã được cài đặt?

Làm cách nào để đảm bảo việc xây dựng không sử dụng thư viện được cài đặt trên hệ thống - cuối cùng không có virtualenv?

Ví dụ - cách tránh hành vi này? :

> cat buildout.cfg 
[buildout] 
parts = django 

[django] 
recipe = zc.recipe.egg 
eggs = django 
interpreter = django 

>bin/django 

>>> import django 
>>> django 
<module 'django' from '/usr/lib/python2.6/site-packages/django/__init__.pyc'> 
>>> 

Có cách nào để buộc xây dựng KHÔNG sử dụng trứng được cài đặt trong /usr/lib/python2.6 không?

Trả lời

9

Bạn có thể nói buildout nếu bạn muốn sử dụng trang web pakages hay không với một trong hai chỉ thị này: include-site-packagesallowed-eggs-from-site-packages

Từ buildout documentation:

Sau đó, bạn có thể sử dụng bao gồm-web- gói = false và exec-sitecustomize = false buildout tùy chọn để loại bỏ quyền truy cập vào gói trang web Python của bạn và không thực hiện tệp tùy chỉnh của nó, nếu nó tồn tại, tương ứng.

Cách khác, bạn có thể sử dụng tùy chọn buildout phép-trứng-từ-site-gói như một glob-aware danh sách trắng trứng có thể đến từ site-packages. Giá trị này mặc định là "*", chấp nhận tất cả trứng.

+0

Các tùy chọn này chỉ hoạt động đối với tôi khi tôi sử dụng z3c.recipe.scripts thay vì zc.recipe.egg; Tôi không chắc đây có phải là kết quả của việc tôi làm sai điều gì không, nhưng có lẽ nó sẽ hữu ích cho ai đó. – Daniel

+0

tôi chỉ có thể tìm thấy thông tin quan trọng này trên trang pypi để xây dựng. Các tài liệu @ http://www.buildout.org/docs/ dường như không đề cập đến nó (hoặc tìm kiếm đó bị hỏng). Tại sao đây không phải là mặc định ngăn cản tôi. Nhưng tôi đang xem nó như virtualenv trên steroid có thể không được xây dựng đầy đủ ý định. –

+0

Vâng tôi cũng thấy điều này khó hiểu, readme tại pypi thực sự là tài liệu đầy đủ và các tài liệu tại 'buildout.org/docs' chỉ bao gồm một vài chủ đề. – Ski

3

Hai cách:

  • Sử dụng buildouts 1.5.something mới nhất: họ không sử dụng các gói hệ thống theo mặc định.

  • Chạy lệnh khởi động với cờ-s: python bootstrap.py -s, có nghĩa là "không có gói trang web".

0

một thay thế mà tôi đã sử dụng trước khi buildout 1.5 đi kèm với các tùy chọn để loại trừ trứng từ python hệ thống của bạn là

virtualenv

chúng tôi viết một bootstrap virtualenv tùy chỉnh mà tạo ra môi trường, lấy bootstrap .py và đặt buildout.cfg tối thiểu, nhưng bạn có thể sử dụng virtualenv bình thường:

cd project virtualenv --no-site-packages ./ 
wget http://...../bootstrap.py 
touch buildout.cfg 
source bin/activate 
python bootstrap.py 
bin/buildout 

và voila, buildout của bạn bị cô lập với vi rtualenv

Các vấn đề liên quan