2013-06-30 65 views
25

Tôi bắt đầu làm việc với gói Anaconda từ Continuum.io để làm công việc scipy. Tôi đã có thể để có được anaconda và chạy, nhưng tôi không thể nói cho dù anaconda tạo ra một biến môi trường PYTHONPATH mới cho mỗi môi trường mới nó tạo ra, hoặc cho dù nó dựa trên hệ thống PYTHONPATH chung? Tôi không thể tìm thấy bất kỳ thông tin nào về điều này trong tài liệu. Hơn nữa, khi tôi đã làm một printenv, tôi đã không nhìn thấy một biến PYTHONPATH trong môi trường mới được tạo ra - mặc dù tôi đã tìm thấy một vài biến anaconda mới tạo ra môi trường. Điều tốt nhất tôi có thể tìm thấy là anaconda đã thêm một số thư mục anaconda và thư mục môi trường mới vào đầu biến PATH - nhưng điều này không nhất thiết phải cô lập gói mới từ môi trường hệ thống nhưng nó gần. Có ai biết câu trả lời cho câu hỏi này hoặc tìm cách giải quyết vấn đề này không.Anaconda có tạo biến PYTHONPATH riêng cho từng môi trường mới không?

+0

Nhưng không phải mọi gói Python đều có sẵn trong Anaconda, vậy khi bạn sử dụng pip để cài đặt gói, điều gì là phổ biến? Sau đó, bạn cần một PYTHONPATH (phiên bản đặc trưng cho Python), vì vậy bạn cần phải lo lắng về việc thay đổi/thiết lập nó trong mỗi shell/mỗi khi bạn mã nguồn kịch bản 'activate' để thay đổi phiên bản Python. Đúng? – smci

Trả lời

23

Không, điều duy nhất cần được sửa đổi cho môi trường Anaconda là PATH (để nó lấy đúng Python từ môi trường bin/ thư mục, hoặc Scripts\ trên Windows).

Cách môi trường Anaconda hoạt động là chúng liên kết cứng mọi thứ được cài đặt vào môi trường. Đối với tất cả các ý định và mục đích, điều này có nghĩa rằng mỗi môi trường là một cài đặt hoàn toàn riêng biệt của Python và tất cả các gói. Bằng cách sử dụng các liên kết cứng, điều này được thực hiện hiệu quả. Vì vậy, không cần phải gây rối với PYTHONPATH bởi vì nhị phân Python trong môi trường đã tìm kiếm các gói trang web trong môi trường và lib của môi trường, v.v.

+0

Ah tuyệt vời. Cái đó thật tuyệt. Chính xác những gì tôi muốn biết. Cảm ơn một lần nữa. – krishnab

+0

Sử dụng nó trên cửa sổ máy và PYTHONPATH từ hai Cài đặt chắc chắn khác nhau. Anaconda không có thư mục mô-đun của tôi trong đó. Để tham khảo, tôi đã thêm nó từ Cài đặt hệ thống nâng cao trong Windows 7. Có vẻ tốt từ python trong sổ tay ipython nó bị hỏng – Joop

15

Anaconda không sử dụng PYTHONPATH. Tuy nhiên, cần lưu ý rằng nếu PYTHONPATH được đặt, nó có thể được sử dụng để tải một thư viện không có trong môi trường anaconda. Đó là lý do tại sao trước khi kích hoạt một môi trường nó có thể là tốt để làm một

unset PYTHONPATH 

Đối với trường hợp này điểm PYTHONPATH một gấu trúc lib không đúng:

export PYTHONPATH=/home/john/share/usr/anaconda/lib/python 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/__init__.py", line 6, in <module> 
    from . import hashtable, tslib, lib 
ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8 

unset các PYTHONPATH ngăn ngừa sự lib gấu trúc sai từ đang được nạp :

unset PYTHONPATH 
source activate anaconda-2.7 
python 
>>>> import pandas as pd 
>>>> 
+2

Có an toàn không khi sử dụng PYTHONPATH để trỏ đến các tệp và mô-đun được tạo cục bộ? Có cách nào tốt hơn so với sử dụng PYTHONPATH? – garyp

+0

Tôi đoán cho dev hoạt động tốt. Tôi có xu hướng chạy python từ thư mục có module tôi đang làm việc, mà về cơ bản là giống nhau. Bạn cũng có thể sử dụng 'pip install -e python_module_dir' với anaconda env nạp để bạn không cập nhật' PYTHONPATH'. – inodb

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