2014-04-22 17 views
7

Tôi thường sử dụng IPython và chỉ mới nhận thấy rằng đường dẫn tìm kiếm cho nhập là sai trong shell python thông thường. Từ những gì tôi hiểu, sys.path kế thừa từ PYTHONPATH (mặc dù tôi không biết PYTHONPATH đang sống ở đâu), điều này có khác biệt trong IPython không? Tôi lo lắng rằng cài đặt hiệu ứng này. Ví dụ: tôi vừa thửIPython sys.path khác với python sys.path

pip install --upgrade gensim 

không thành công vì không thể giải quyết sự phụ thuộc scipy mà tôi đã cài đặt. Vì vậy, tôi chim bồ câu một chút sâu hơn và tìm thấy trong ipython

import gensim 
gensim.__version__ 

lợi nhuận .9.1 trong khi ở python

import gensim 
gensim.__version__ 

lợi nhuận .8.9

Dưới đây là những gì các phiên bản ipython của sys.path trông giống như:

['', 
    '/Users/change/anaconda/bin', 
    '/Users/change/anaconda/lib/python2.7/site-packages/pybing-0.12-py2.7.egg', 
    '/Users/change/anaconda/lib/python2.7/site-packages/httplib2-0.8-py2.7.egg', 
    '/Users/change/anaconda/python.app/Contents/lib/python27.zip', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-darwin', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-mac', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/plat-mac/lib-scriptpackages', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-tk', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-old', 
    '/Users/change/anaconda/python.app/Contents/lib/python2.7/lib-dynload', 
    '/Users/change/anaconda/lib/python2.7/site-packages', 
    '/Users/change/anaconda/lib/python2.7/site-packages/PIL', 
    '/Users/change/anaconda/lib/python2.7/site-packages/pygoogle', 
    '/Users/change/anaconda/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info', 
    '/Users/change/anaconda/lib/python2.7/site-packages/IPython/extensions'] 

và các con trăn thông thường sys.path cript:

['', 
'/Users/change/anaconda/lib/python2.7/site-packages/pybing-0.12-py2.7.egg', 
'/Users/change/anaconda/lib/python2.7/site-packages/httplib2-0.8-py2.7.egg', 
'/Users/change/anaconda/lib/python27.zip', 
'/Users/change/anaconda/lib/python2.7', 
'/Users/change/anaconda/lib/python2.7/plat-darwin', 
'/Users/change/anaconda/lib/python2.7/plat-mac', 
'/Users/change/anaconda/lib/python2.7/plat-mac/lib-scriptpackages', 
'/Users/change/anaconda/lib/python2.7/lib-tk', 
'/Users/change/anaconda/lib/python2.7/lib-old', 
'/Users/change/anaconda/lib/python2.7/lib-dynload', 
'/Users/change/anaconda/lib/python2.7/site-packages', 
'/Users/change/anaconda/lib/python2.7/site-packages/PIL', 
'/Users/change/anaconda/lib/python2.7/site-packages/pygoogle', 
'/Users/change/anaconda/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'] 
+0

Để biết thêm về cách thức hoạt động sys.path, xem câu trả lời này http://stackoverflow.com/a/38403654/ 850326 – djhaskin987

Trả lời

3

Có lẽ đã quá muộn cho bạn bây giờ, nhưng câu trả lời ở đây có thể giúp bạn quá: ipython reads wrong python version. Về cơ bản, kịch bản ipython có thể trực tiếp tham chiếu đến một nhị phân python cụ thể chứ không phải là tệp nhị phân mà bạn muốn có được nếu bạn chỉ chạy trực tiếp python.

+0

Nhận xét đầu tiên dưới câu hỏi liên kết của bạn đã giúp tôi. – scottlittle

0

Tôi đã có phiên bản cài đặt sẵn của Python trên máy Mac của mình. Đối với một số lý do mà không thể sử dụng thư viện hệ thống. Sau brew uninstall python nó hoạt động trở lại, bởi vì con trăn mặc định được chuyển về/usr/bin/python.

Cũng chơi xung quanh với which python, which ipython và mở/usr/bin/python,/usr/local/bin/python,/usr/bin/ipython và/usr/local/bin/ipython và thực hiện nhập có thể giúp bạn tìm ra nơi nó chính xác là sai.

+0

Mac có vấn đề khó khăn khi thiết lập 'sys.path' và' sys.executable' trên máy mac, vì nó phải đoán tại nơi thực thi python thực tế là; DARWIN không truyền toàn bộ đường dẫn của python đến chính nó. :( – djhaskin987

0

Bạn có thể kích hoạt môi trường ảo đang bỏ qua đường dẫn hệ thống.

Nó có thể được cố định bằng cách chạy này trong terminal (Sau khi đóng máy tính xách tay vv):

virtualenv --system-site-packages ~ 
Các vấn đề liên quan