2012-08-31 34 views
8

Tôi đã cài đặt EPD 7.3.1 (hiện nay được gọi là Enthought Canopy), đi kèm với scikit-learn v 0.11. Tôi đang chạy Ubuntu 12.04. Tôi cần cài đặt v 0.12 scikit-learn.Phiên bản nâng cấp của scikit-learn được bao gồm trong phân phối Enthought Canopy

Các scikit-học doc says bản sao kho, thêm thư mục scikit-học cách PYTHONPATH của bạn, và xây dựng phần mở rộng tại chỗ: python setup.py build_ext --inplace

Vấn đề là EPD là thế giới khép kín của riêng mình (với mulitple scikit dirs):
./lib/python2.7/site-packages/scikits/
./lib/python2.7/site-packages/sklearn

Và sau đó có:
./EGG-INFO/scikit_learn/

Tôi thực sự không muốn thử nghiệm vì đã mất nhiều thời gian để mọi thứ được điều chỉnh đến thời điểm này. Tôi có nên làm theo hướng dẫn của scikit-learning trong trường hợp này không?

Trả lời

12

Các tác vụ được mô tả trên trang web tìm hiểu về công việc không phân biệt phiên bản scikit-learning trong EPD. Python sẽ tự động sử dụng phiên bản scikit-learning được thiết lập trong PYTHONPATHenvironment variable, mà bạn nên đặt thành đường dẫn thư mục của phiên bản Git của scikit-learn.

Nếu bạn sử dụng Bash trên một hệ thống Unix-like, bạn nên làm như sau:

  • Thực hiện các hành động để install scikit-learn's latest code (trong ví dụ này tôi nhân bản nó để /home/yourname/bin/scikit-learn)
  • Sửa .bashrc và thêm dòng: export PYTHONPATH="/home/yourname/bin/scikit-learn";
  • mở một nhà ga mới và bắt đầu Python trong chế độ tương tác bằng cách gõ python
    • Loại: 012.
    • Loại: sklearn.__verion__ này bây giờ sẽ hiển thị '0.12-git' thay vì 0.11

Tại sao công việc này? Python sử dụng biến số sys.path (một list đường dẫn) trong nội bộ để theo dõi tất cả các thư mục cần tìm các mô-đun và gói. Một khi một mô-đun hoặc gói được yêu cầu, Python sẽ tuần tự đi qua danh sách này cho đến khi nó đã tìm thấy một kết quả phù hợp. Vì vậy, ví dụ: một mô-đun có thể được liệt kê nhiều lần trong sys.path, nhưng chỉ phiên bản xuất hiện đầu tiên trong danh sách mới được sử dụng.

Mọi cài đặt Python sẽ có tập hợp đường dẫn mặc định riêng được liệt kê trong sys.path. Một cách để mở rộng sys.path bằng cách liệt kê đường dẫn trong PYTHONPATH. Khi Python bắt đầu, nó sẽ đọc biến môi trường này và thêm nó vào đầu danh sách sys.path. Vì vậy, nếu bạn thêm đường dẫn đến một phiên bản khác của scikit-learn để PYTHONPATH của bạn sau đó (EPD) Python sẽ tìm thấy phiên bản của scikit-tìm hiểu đầu tiên và sử dụng nó thay vì phiên bản được liệt kê thêm trong sys.path.

Để xem sys.path, chỉ cần import sys và sau đó print sys.path. Ngoài ra, ví dụ: nếu bạn chỉ muốn sử dụng phiên bản 0.12 của scikit-learn trong một chương trình Python và sử dụng giá trị 0.11 phiên bản như mặc định trong tất cả các chương trình Python khác thì bạn có thể rời khỏi PYTHONPATH trống và chỉ chèn đường dẫn đến scikit-học 0,12 bằng tay ở phía trên cùng của mã của bạn:

import sys 
sys.path.insert(0, '/home/yourname/bin/scikit-learn') 
import sklearn 
+1

On Stack Overflow cộng đồng cho downvotes lời các câu hỏi xấu và upvotes để câu hỏi tốt. Tôi sẽ để lại câu hỏi cho bây giờ, nhưng nếu mọi người bắt đầu downvote nó sau đó bạn có một dấu hiệu tốt mà bạn có thể muốn xóa nó. – Sicco

+0

Tôi đã gặp sự cố tương tự nhưng tôi có máy Mac. Tôi đã quản lý để cài đặt scikit chỉ thông qua macports (không sử dụng scikits setup.py, luôn luôn kết thúc bằng lỗi giữa chiều). Tuy nhiên, tôi không thể tìm thấy bashrc. Tất cả những gì tôi muốn làm là cập nhật Scikit trong EPD (học thuật) lên .13, và nó chứng tỏ rất khó, bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao! – Shinjitsu

+0

@Shinjitsu Hãy thử sử dụng .profile thay vì .bashrc. Cho tôi biết nếu nó hoạt động. – Sicco

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