2011-08-22 36 views
271

Có thể không? Khi cài đặt pip, hãy cài đặt các gói python bên trong thư mục $HOME của tôi. (Ví dụ, tôi muốn cài đặt mercurial, sử dụng pip, nhưng bên trong $HOME thay vì /usr/local)

tôi với một máy mac và chỉ nghĩ đến khả năng này, thay vì "ô nhiễm" của tôi /usr/local, tôi sẽ sử dụng của tôi $HOME thay thế.

PEP370 chính xác về điều này. Chỉ cần tạo một ˜/.local và làm một pip install package đủ để làm cho các gói này chỉ được cài đặt tại thư mục $ HOME của tôi?

+0

Bạn đã xem virtualenv chưa? Bạn có thể cài đặt các gói với pip trong một môi trường bị cô lập. – joet3ch

+2

Tôi nghĩ về nó, nhưng tôi muốn cài đặt một số ứng dụng python sử dụng python hiện có (2.6.1), nhưng thay vì cài đặt tại/usr/local /, cài đặt tại thư mục $ HOME của tôi và thêm nó vào $ PATH. Tôi muốn biết nếu nó có thể, và bất kỳ lời khuyên nào về cách tiếp cận này. –

+10

+1 để quảng bá PEP370. Đây là một lựa chọn đơn giản nhưng hữu ích mà nhiều người nên biết. –

Trả lời

380

Trong khi bạn có thể sử dụng virtualenv, bạn không cần phải. Bí quyết đang chuyển đối số PEP370 --user tới tập lệnh setup.py. Với phiên bản mới nhất của pip, một trong những cách để làm điều đó là:

pip install --user mercurial 

này nên kết quả trong kịch bản hg đang được cài đặt trong $HOME/.local/bin/hg và phần còn lại của gói hg trong $HOME/.local/lib/pythonx.y/site-packages/.

Lưu ý rằng ở trên là đúng cho Python 2.6. Đã có bit of controversy trong số các nhà phát triển lõi Python về vị trí thư mục thích hợp trên Mac OS X cho cài đặt user kiểu PEP370 là gì. Trong Python 2.7 và 3.2, vị trí trên Mac OS X đã được thay đổi từ $HOME/.local thành $HOME/Library/Python. Điều này có thể thay đổi trong bản phát hành trong tương lai. Nhưng, hiện tại, trên 2.7 (và 3.2, nếu hg được hỗ trợ trên Python 3), các vị trí trên sẽ là $HOME/Library/Python/x.y/bin/hg$HOME/Library/Python/x.y/lib/python/site-packages.

+0

Điểm tốt. Thật không may, có một lỗi trong Python 2.7 khiến PYTHONUSERBASE bị bỏ qua đối với các bản dựng khung OS X. Nó sẽ được sửa cho Python 2.7.3. –

+1

Điều này trông rất insteresting. 'easy_install' được cài đặt trong Mac OS X theo mặc định, vì vậy tôi sẽ chỉ cài đặt pip bên ngoài thư mục' $ HOME'. –

+0

'easy_install' đi kèm với Snow Leopard của tôi cài đặt' pip' trên '/ Library/Python/2.6/site-packages/pip-1.0.2-py2.6.egg'. Làm 'pip' cho thấy'/usr/local/bin/pip'. Cài đặt mercurial với đối số '--user' và pip,' mà hg' bây giờ hiển thị '$ HOME/.local/bin/hg' !. (Tôi cần thêm '$ HOME/.local/bin' vào' $ PATH' để làm cho nó hoạt động được.) –

18

Tôi sẽ sử dụng virtualenv tại thư mục HOME của bạn.

$ sudo easy_install -U virtualenv 
$ cd ~ 
$ virtualenv . 
$ bin/pip ... 

Sau đó, bạn cũng có thể thay đổi ~/.(login|profile|bash_profile), nào là đúng cho vỏ của bạn để thêm ~/bin vào PATH của bạn và sau đó pip|python|easy_install sẽ là một trong những sử dụng bởi mặc định.

+6

Cách *" de facto "* để thực hiện điều này là' virtualenv venv', 'source venv/bin/activate'. Bạn có thể không nhất thiết muốn ** luôn luôn ** sử dụng virtualenv của bạn, và bằng cách sử dụng phương pháp này, dấu nhắc của bạn được bắt đầu bằng '(venv)' khi bạn đang sử dụng nó. – nyuszika7h

+2

@ nyuszika7h Chúng tôi biết cách sử dụng virtualenv. Nhưng điều này thực sự trả lời câu hỏi và là một giải pháp rất gọn gàng. – itsafire

+5

@itsafire Ai là "chúng tôi"? Tôi khuyên bạn nên đọc https://en.wikipedia.org/wiki/Weasel_word – nyuszika7h

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