Tôi dường như không còn có thể nâng cấp gói đã được cài đặt trong Ubuntu 15.04. Pip vẫn hoạt động, cài đặt gói vào /usr/local/python2.7/dist-packages
, nhưng danh sách đường dẫn /usr/python2.7/dist-packages
ở trên cùng, và thậm chí PYTHONPATH
không thể có được thứ gì đó phía trên dòng đó. Tôi tin rằng điều này hoạt động trong Ubuntus cũ. Tôi đã cố gắng tìm một cái gì đó trong /usr/python/site.py
, nhưng có vẻ như làm điều đúng. Việc thêm -S
dường như dừng phiên bản không phải cục bộ ở trên cùng. Tôi đã nhìn thấy điều này trên hai máy tính, tôi tin.Pip không thể nâng cấp gói cài sẵn trong ubuntu 15.04
Một số ví dụ về nhu cầu này: Cập nhật để nhận tính năng/sửa lỗi bắt buộc (đối với PILLOW, trong trường hợp của tôi) mà không cần gỡ cài đặt APT một gói gói liệt kê gói đó theo yêu cầu.
Chỉnh sửa: Để làm rõ, câu hỏi là: Tôi muốn sắp xếp lại thứ tự tìm kiếm thư mục để khôi phục hoạt động của Ubuntu 14.10. Có nhiều cách tốt hơn để làm điều này trên nhiều hệ thống, nhưng tôi muốn sử dụng gói dựng sẵn trong apt, chỉ với một hoặc hai (tiềm năng) các gói mới hơn, như IPython và các loại tương tự, thay vì sử dụng virtual-env và Anacoda (cả hai mà tôi sử dụng trên các hệ thống khác). Dường như hành vi mong muốn của tôi là hành vi Debian được ghi lại, vì vậy tôi không chắc chắn tại sao nó lại sắp xếp lại đường dẫn.
Đây là con đường để chứng minh vấn đề, chú ý đến biến PYTHONPATH
là ở giữa, với hai thư mục git:
>>> sys.path
['',
'/usr/lib/python2.7/dist-packages',
'/usr/local/lib/python2.7/dist-packages/requests-2.6.0-py2.7.egg',
'/usr/local/lib/python2.7/dist-packages/octave_kernel-0.10.0-py2.7.egg',
'/home/username/git/maya',
'/home/username/git/udaq/pyUDAQ',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/PILcompat',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.7',
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client',
'/usr/lib/python2.7/dist-packages/wx-3.0-gtk2']
Để tham khảo, tôi có một hệ thống phù hợp với chạy 14.04, và nó có chính xác dự kiến hành vi. Hai số PYTHONPATH
dirs đến trước, sau đó sau đó trên địa chỉ dist-packages
nằm phía trên được tích hợp sẵn.
Tôi nghĩ rằng việc cho phép 'pip' và' apt' chống lại các gói là một ý tưởng rất tồi. Một cách sạch sẽ hơn nhiều là chuyển sang 'virtualenvs' thay thế. – cel
Tôi muốn có thể giao máy tính cho một người theo chỉ dẫn nhưng không biết nhiều. Nói với anh ta "máy tính xách tay ipython" dễ hơn là phải nói với anh ta để kích hoạt một env ảo đầu tiên. Tuy nhiên, đó là một ý tưởng hay. –
Trong trường hợp đó: chuyển sang 'anaconda' và cài đặt các gói vào môi trường gốc.Sau đó, 'conda' và' pip' bây giờ là các trình quản lý gói của bạn và 'apt' sẽ không can thiệp. – cel