2011-10-26 16 views
23

Có cách nào để cho Python biết về các vị trí bổ sung site-packages mà không sửa đổi các tập lệnh hiện có không?Định cấu hình Python để sử dụng các vị trí bổ sung cho các gói trang web

Trên máy chủ CentOS 5.5 của tôi, tôi cài đặt Python 2.7 được cài đặt trong /opt/python2.7.2 và có thư mục site-packages tại /opt/python2.7.2/lib/python2.7/site-packages.

Lý do cho điều này là tôi không muốn làm phiền bản cài đặt Python 2.4 hiện có được phân phối với bản phân phối 5,5.

Tuy nhiên ứng dụng Python của bên thứ ba cũng đã thêm một thư mục site-packages tại: /usr/local/lib/python2.7/site-packages và được cài đặt tại vị trí đó.

Đây là một phần lỗi của tôi vì tôi không sửa đổi PREFIX trong ứng dụng Makefile trước khi cài đặt, tuy nhiên hiện tại tôi không thể làm gì nhiều.

Tôi biết rằng tôi có thể làm điều này:

import sys; sys.path.insert(0, "/usr/local/lib/python2.7/site-packages") 

Tuy nhiên nó sẽ liên quan đến tôi theo dõi xuống mỗi kịch bản và thêm ở trên mà không phải là lý tưởng nên có thể cập nhật trong tương lai.

Để làm được việc này tôi đã tạo ra một liên kết tượng trưng trong /opt/python2.7.2/lib/python2.7/site-packages đến vị trí của ứng dụng của bên thứ ba này:

 
ln -sf /usr/local/lib/python2.7/site-packages/theapp /opt/python2.7.2/lib/python2.7/site-packages/theapp 

Điều này dường như làm việc tốt nhưng tôi tự hỏi nếu có một cách tốt hơn?

Trả lời

36

Bạn có thể sử dụng Site-specific configuration hook.

"Một tập tin cấu hình đường dẫn là một tập tin có tên có dạng name.pth và tồn tại trong một trong bốn thư mục nêu trên; nội dung của nó là mục bổ sung (mỗi dòng một) để được thêm vào sys.path."

Trong trường hợp của bạn, bạn sẽ có thể đạt được những gì bạn muốn bằng cách đơn giản thả trong một file .pth chứa đường dẫn của thư mục bao gồm:

[[email protected]]$ echo "/usr/local/lib/python2.7/site-packages/" > /opt/python2.7.2/lib/python2.7/site-packages/usrlocal.pth 
+0

Điều này làm việc một điều trị, tuy nhiên tôi quyết định bit viên đạn và sửa chữa triển khai. Nhưng cảm ơn anyway, hữu ích để biết cho tương lai. – Kev

+2

Điều này thêm đường dẫn đến * đầu * của đường dẫn python. Điều gì sẽ xảy ra nếu bạn muốn các gói trang web tùy chỉnh của mình xuất hiện trước? Tôi đã thử nghiệm với một tập tin sitecustomize.py với một số thành công, nhưng có vẻ là trường hợp cạnh mà chỉ đơn giản là thao tác đường dẫn python là không đủ. – wryfi

2

Bạn có thể thay thế python thực thi với một kịch bản trình bao bọc gắn thêm đường dẫn cài đặt của bạn vào PYTHONPATH. Nhưng đây là một kludge.

Nhưng tôi sẽ cố gắng khắc phục cài đặt tiện ích để tiện ích này đi vào thư mục gói trang web.

+0

Câu trả lời của Shawn đã thực hiện thủ thuật, nhưng bạn cũng đúng trong việc sửa chữa cài đặt thực sự tốt hơn trong thời gian dài. – Kev

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