2017-08-11 16 views
5

OK, điều này thật lạ. Tôi đang giúp một đồng nghiệp trên máy Mac (Yosemite), chạy tệp Python được vận chuyển trong /usr/bin/python (2.7.10). Tôi đã sử dụng số điện thoại được vận chuyển easy_install để cài đặt pip (9.0.1), được gửi trong /usr/local/bin với đường dây shebang là #!/usr/bin/python. sau đó tôi sử dụng pip để cài đặt một số mô-đun, bao gồm six, chỉ để tìm ra rằng pip và trăn bằng cách nào đó không đồng ý về phiên bản của mô-đun:Pip và Python không đồng ý với vị trí mô-đun

Tail của pip install -vvv -U six:

Installed version (1.10.0) is most up-to-date (past versions: 0.9.0, 0.9.1, 0.9.2, 1.0.0, 1.1.0, 1.2.0, 1.3.0, 1.4.0, 1.4.1, 1.5.0, 1.5.1, 1.5.2, 1.6.0, 1.6.1, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.8.0, 1.9.0, 1.10.0) 
Requirement already up-to-date: six in /Library/Python/2.7/site-packages 

Sản lượng python -c 'import six; print six.__version__':

1.4.1 

Vị trí có liên quan:

$ type pip 
pip is /usr/local/bin/pip 
$ type python 
python is /usr/bin/python 
$ head -n 1 $(type -p pip) 
#!/usr/bin/python 

$PYTHONPATH không được đặt trong môi trường. Nhưng họ vẫn đang tìm kiếm ở những nơi khác nhau. Như bạn có thể thấy từ đầu ra pip, nó đang tìm kiếm/lưu trữ trong /Library/Python/2.7/site-packages/. Nhưng nếu tôi lặp lại trên sys.path, nơi đầu tiên tôi tìm thấy six là trong /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/.

Vì vậy, ngắt kết nối ở đâu?

+0

Mac của đồng nghiệp của bạn có phải là El Capitan không? có thể liên quan đến [this] (https://github.com/FindHotel/s3keyring/issues/6) –

+0

Anh ấy đang chạy Yosemite, nhưng có vẻ như một tình huống tương tự –

+0

[This] (https://github.com/pypa/ pip/issues/3165 # issuecomment-146666737) có thể giúp –

Trả lời

1

Vấn đề hóa ra là thứ tự của đường dẫn tải. Trên máy Sierra của tôi (nơi tôi đã xác minh rằng tôi có thể cài đặt six mới cho mặc định /usr/bin/python), /Library/Python/2.7/site-packages đến trước/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python trong sys.path. Nhưng trên máy của đồng nghiệp, /Library/Python/2.7/site-packages là mục nhập cuối cùng, đến sau thư mục Extras, vì vậy phiên bản cài đặt pip bị cài đặt hệ thống che dấu.

Tôi nghi ngờ đây là vấn đề với cài đặt Python Yosemite đã được Sierra cố định, nhưng trong bất kỳ trường hợp nào tôi cũng không thể sửa được dễ dàng. Vì vậy, các tùy chọn là cài đặt một cá thể Python riêng biệt (tùy chọn của tôi; tôi thường sử dụng pyenv anyway) hoặc đặt thủ công PYTHONPATH để đặt site-packages ra phía trước. Hoặc nâng cấp lên một macOS mới hơn, tôi cho là vậy.

Nhờ tất cả mọi người đã giúp tìm hiểu điều này.

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