2011-08-04 31 views
10

Tôi đã sử dụng python_select, có vẻ như nó không thay đổi python mặc định để thực thi các tập lệnh, ví dụ django-admin.py runserver (không có python ở phía trước).Macports chọn trình thông dịch Python mặc định để thực thi tập lệnh?

Làm cách nào để thay đổi điều này?

+1

Tôi nghĩ rằng điều này có thể được đặt tốt hơn trên SuperUser ... – thegrinner

+0

Có thể nó có thể bị ghi đè bởi dòng đầu tiên '#!' Trong tệp .py. –

+0

Có, người ta có thể ghi đè lên nó bằng một '#!', Thực sự, nhưng câu hỏi của OP là cụ thể về trình thông dịch Python mặc định. – fviktor

Trả lời

19

/usr/bin/python, thường là trước đó trong đường dẫn (có mức độ ưu tiên cao hơn) so với thư mục nhị phân của MacPort (/opt/local/bin/python). Đoạn mã python_select chỉ thay đổi /opt/local/bin/python, vì vậy bạn phải đảm bảo không có mã nhị phân python nào khác trên đường đi của bạn được ưu tiên hơn.

Giải pháp (như root):

mv /usr/bin/python /usr/bin/python.orig 
ln -s /opt/local/bin/python /usr/bin/python 
port select --set python python26 

Hãy chắc chắn rằng bạn thay thế python26 trong dòng thứ ba với phiên bản Python dự định của bạn.

Nó đã hoạt động cho tôi cách đây vài ngày với MacPort 2.0.0. Nếu bạn có thư viện MacPort cũ hơn, thì bạn nên nâng cấp hoặc sử dụng python_select thay vì port select --set python.

+2

Cách tiếp cận đơn giản và an toàn hơn là đặt/opt/local/bin sớm hơn trong PATH của bạn. Để thực hiện việc này khi bạn có thể thực hiện các thao tác sau trong bash shell: '' 'xuất PATH =/opt/local/bin: $ PATH''' Hoặc chỉnh sửa ~/.bash_profile và thêm dòng vào cuối của tệp. Nói chung là một ý tưởng tồi khi sửa đổi Python của hệ thống như thể bạn phá vỡ nó, bạn có thể phá vỡ bất kỳ tiện ích hoặc công cụ nào trên máy Mac sử dụng Python của hệ thống. Chỉnh sửa: định dạng. –

+0

@MickT: Tôi đã làm những gì bạn đề xuất, bởi vì tôi nghĩ đó là cách tiếp cận tốt hơn. Tôi có thể xác minh rằng '/ opt/local/bin' nằm ở đầu biến' PATH' của tôi, nhưng khi tôi gõ 'which python', nó đưa ra một danh sách bắt đầu bằng'/usr/local/bin/python'. Bất kỳ ý tưởng nào tại sao 'which' lại đưa ra thứ tự khác với' PATH'? – jvriesem

+0

@jvriesem Nếu '' '/ usr/local/bin /' '' là đầu tiên trong đường dẫn của bạn thì '' '/ usr/local/bin/python''' sẽ là Python đầu tiên được tìm thấy. Tôi có hiểu nhầm điều gì đó không? Nếu có, vui lòng đăng xuất kết quả sau: echo $ PATH –

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