Cách chính thức “ưa thích” để cài đặt pip và virtualenv trên toàn hệ thống là gì?


86

Đây có phải là điều mà mọi người thường khuyên dùng nhất:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

Hoặc cái này, tôi lấy được từ http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

Hay một cái gì đó hoàn toàn khác?

Câu trả lời:


93

Nếu bạn có thể cài đặt Python mới nhất (2.7.9 trở lên), Pip hiện được đóng gói cùng với nó. Xem: https://docs.python.org/2.7//installing/index.html
Nếu không:
Cập nhật (từ ghi chú phát hành):

Bắt đầu với v1.5.1, pip không yêu cầu các công cụ thiết lập trước khi chạy get-pip.py. Ngoài ra, nếu setuptools (hoặc phân phối) chưa được cài đặt, get-pip.py sẽ cài đặt setuptools cho bạn.

Bây giờ tôi chạy thông thường:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Đây là hướng dẫn cài đặt chính thức: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDIT 25-07-2013:
Đã thay đổi URL để cài đặt setuptools.

EDIT 10 tháng 2 năm 2014:
Đã xóa cài đặt setuptools (cảm ơn @Ciantic)

EDIT 26-Jun-2014:
Cập nhật lại URL (cảm ơn @LarsH)

CHỈNH SỬA ngày 1 tháng 3 năm 2015:
Pip hiện được đóng gói với Python


1
Bạn cài đặt setuptools-0.8 ở đâu / như thế nào? Có vẻ như bạn chỉ đang ez_setup.pytìm kiếm một "phiên bản nhẹ" của việc nhận pip. Tôi muốn làm như vậy nhưng sợ rằng nó sẽ phá vỡ trong tương lai gần và tôi sẽ gặp khó khăn ở đây một lần nữa (như tôi luôn luôn làm)
Steven Lu

3
À, hình như hướng dẫn nói cứ làm như bạn nói ở đây thì bị xử phạt. Đừng bận tâm.
Steven Lu

4
Có một cách mới (?) Để thực hiện việc này, điều này sẽ tự động cài đặt pip và setuptools: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py và sau đó python get-pip.py(có thể yêu cầu sudo)
Ciantic

3
Bây giờ URL cho get-pip.py dường như đã thay đổi thành https://bootstrap.pypa.io/get-pip.py. Có lẽ tốt hơn chỉ cần liên kết đến các hướng dẫn chính thức.
LarsH

2
PS Cảm ơn vì câu trả lời này - nó đã giúp tôi cài đặt pip.
LarsH

21

http://www.pip-installer.org/en/latest/installing.html thực sự là câu trả lời chính tắc cho câu hỏi này.

Cụ thể, các hướng dẫn trên toàn hệ thống là:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

Phần được trích dẫn trong câu hỏi là virtualenvhướng dẫn chứ không phải là hướng dẫn trên toàn hệ thống. Các easy_installhướng dẫn đã tồn tại lâu hơn, nhưng không cần thiết phải làm theo cách đó nữa.


Đã được chỉnh sửa để làm rõ sự khác biệt giữa hướng dẫn trên toàn hệ thống trên trang đó và virtualenvhướng dẫn được trích dẫn trong câu hỏi.
ncoghlan

1
Cập nhật: phân phối không hoạt động nữa cho pip! Xem stackoverflow.com/a/17601159/78234
Tal Weiss

1
Xin lưu ý rằng các hướng dẫn trên trang được liên kết không còn khớp với các hướng dẫn ở đây. Tốt nhất là chỉ cần truy cập trang chính thức và làm theo những gì họ nói (và tại sao có ai đó nghi ngờ họ ngay từ đầu ?!)
Neil Traft

Cách tiếp cận được mô tả trong câu trả lời này đã lỗi thời và dường như không còn hoạt động nữa.
cel

16

Câu trả lời này đến từ @webology trên Twitter:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

Ghi chú đã thêm của tôi:

  • Trên Mac / Windows (và Linux nếu apt repo đã lỗi thời), bạn sẽ thay thế bước đầu tiên bằng cách tải xuống các công cụ thiết lập từ http://pypi.python.org/pypi/setuptools
  • Trên Windows, bạn phải bỏ qua virtualenvwrapper từ bước cuối cùng và cài đặt thủ công bằng cách nào đó. Tôi không biết liệu có cách nào để làm điều này mà không có Cygwin không, nhưng tôi hy vọng vậy.

1
Nếu điều kiện là bạn muốn cài đặt pip và virtualenv trên toàn hệ thống, thì đây là điều tôi thường làm. Các hướng dẫn từ tài liệu pip được đưa ra như là giải pháp thay thế thứ hai trong câu hỏi dựa trên tiền đề rằng chúng tôi đang tránh cài đặt bất kỳ thứ gì trên toàn hệ thống.
Carl Meyer

3
Bạn có thể thay thế hai lệnh đầu tiên bằng $ sudo apt-get install python-pip. Cài đặt python-pip cũng sẽ cài đặt python-setuptools.
Dennis

4

Trên Ubuntu 12.04, tôi đã gặp may khi chỉ sử dụng trình quản lý gói:

sudo apt-get install python-pip virtualenvwrapper

1
Các phiên bản đóng gói đã lỗi thời. 12.04 cung cấp python-pip 1.0-1build1được phát hành vào đầu năm 2011 và virtualenvwrapper 2.11.1-21phát hành vào tháng 1 năm 2012. Câu trả lời của @Richard Jones sẽ giúp bạn có được thông tin mới nhất.
JCotton

3

Không có phương pháp ưa thích - mọi thứ phụ thuộc vào nhu cầu của bạn. Thường thì bạn cần có các trình thông dịch Python khác nhau trên hệ thống vì bất kỳ lý do gì. Trong trường hợp này, bạn cần cài đặt từng thứ cho từng trình thông dịch. Ngoài điều đó ra: Tôi thích tự mình cài đặt nội dung thay vì phụ thuộc vào những thứ được đóng gói sẵn đôi khi gây ra sự cố - nhưng đó chỉ là một opionion có thể xảy ra.


Tôi đang hỏi cụ thể về phương pháp ưa thích bởi vì tôi sẽ đưa ra những hướng dẫn này cho một lớp học gồm 20 người và không muốn đánh lừa họ.
máy xay cà phê vào

3

Thực sự không có một "câu trả lời" nào cho câu hỏi này, nhưng chắc chắn có một số khái niệm hữu ích có thể giúp bạn đi đến quyết định.

Câu hỏi đầu tiên cần được trả lời trong trường hợp sử dụng của bạn là "Tôi có muốn sử dụng Python hệ thống không?" Nếu bạn muốn sử dụng Python được phân phối với hệ điều hành của mình, thì việc sử dụng phương pháp apt-get install có thể tốt. Tuy nhiên, tùy thuộc vào phương pháp phân phối hệ điều hành, bạn vẫn phải hỏi thêm một số câu hỏi, chẳng hạn như "Tôi có muốn cài đặt nhiều phiên bản của gói này không?" Nếu câu trả lời là có, thì có lẽ không phải là một ý kiến ​​hay khi sử dụng một cái gì đó như apt. Dpkg khá nhiều sẽ chỉ xóa một kho lưu trữ ở gốc của hệ thống tệp, do đó, người bảo trì gói có thể đảm bảo gói cài đặt an toàn với rất ít giả định. Trong trường hợp của hầu hết các gói debian, tôi sẽ cho rằng (ai đó có thể thoải mái sửa cho tôi ở đây) rằng họ chỉ cần gỡ bỏ và cung cấp một gói cấp cao nhất.

Ví dụ: giả sử gói là "virtualenv", bạn sẽ kết thúc bằng /usr/lib/python2.x/site-packages/virtualenv. Nếu bạn cài đặt nó với easy_installbạn, bạn sẽ nhận được một cái gì đó giống như /usr/lib/python2.x/site-packages/virtualenv.egg-linkvậy có thể trỏ đến /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggđó có thể là một thư mục hoặc trứng nén. Pip làm điều gì đó tương tự mặc dù nó không sử dụng trứng và thay vào đó sẽ đặt gói cấp cao nhất trực tiếp trong libthư mục.

Tôi có thể đi đúng hướng, nhưng vấn đề là mỗi phương pháp có tính đến các nhu cầu khác nhau. Đây là lý do tại sao các công cụ như virtualenv rất hữu ích vì chúng cho phép bạn hộp cát các thư viện Python của mình để bạn có thể có bất kỳ sự kết hợp nào bạn cần giữa các thư viện và phiên bản.

Setuptools cũng cho phép cài đặt các gói dưới dạng đa vũ trụ, nghĩa là không có một mo nào dule_name.egg-linkđược tạo ra. Để nhập các gói đó, bạn cần sử dụng pkg_resources và __import__hàm.

Quay trở lại câu hỏi ban đầu của bạn, nếu bạn hài lòng với hệ thống python và dự định sử dụng virtualenv và pip để xây dựng môi trường cho các ứng dụng khác nhau, thì việc cài đặt virtualenv và / hoặc pip ở cấp hệ thống bằng apt-get có vẻ hoàn toàn phù hợp. Tuy nhiên, một lời cảnh báo là nếu bạn có kế hoạch nâng cấp bản phân phối Python của mình, điều đó có thể có tác động lan truyền qua các virtualenv của bạn nếu bạn liên kết lại với các gói trang web hệ thống của mình.

Tôi cũng nên đề cập rằng không có tùy chọn nào trong số này vốn là tốt hơn các tùy chọn khác. Họ chỉ đơn giản là có những cách tiếp cận khác nhau. Sử dụng phiên bản hệ thống là một cách tuyệt vời để cài đặt các ứng dụng Python, nhưng nó có thể là một cách rất khó để phát triển với Python. Dễ dàng cài đặt và thiết lập công cụ rất thuận tiện trong một thế giới không có virtualenv, nhưng nếu bạn cần sử dụng các phiên bản khác nhau của cùng một thư viện, thì nó cũng trở nên khá khó sử dụng. Pip và virtualenv thực sự hoạt động giống như một máy ảo hơn. Thay vì quan tâm đến việc cài đặt mọi thứ cạnh nhau, bạn chỉ cần tạo ra một môi trường hoàn toàn mới. Nhược điểm ở đây là hơn 30 virtualenvs sau này, bạn có thể đã sử dụng khá nhiều không gian đĩa và làm lộn xộn hệ thống tệp của mình.

Như bạn có thể thấy, với nhiều tùy chọn, rất khó để nói phương pháp nào sẽ sử dụng, nhưng với một chút điều tra về các trường hợp sử dụng của bạn, bạn sẽ có thể tìm ra phương pháp hiệu quả.



2

Vì virtualenvs chứa pip theo mặc định, tôi hầu như không bao giờ cài đặt pip trên toàn cầu. Những gì tôi làm cuối cùng trông giống như sau:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

Sau đó, tôi tiến hành cài đặt và thiết lập virtualenvwrapper theo ý thích của mình và tắt máy. Nó cũng có thể đáng giá khi xem qua virtualenv-burrito của Jeremy Avnet:

https://github.com/brainsik/virtualenv-burrito


Cảm ơn vì đã bắt được. ;)
David Gouldin

3
Tại sao bạn lại bận tâm với python-setuptools và sau đó phân phối khi bạn có thể trực tiếp phân phối?
lambacck

@lambacck Bạn có thể vui lòng đăng những gì bạn đang mô tả trong một câu trả lời riêng (ngay cả khi nó có vẻ lặp lại) không?
máy xay cà phê,

2
Chưa kể rằng trên bất kỳ Ubuntu nào gần đây (và cả Debian nữa? Không chắc chắn) gói "python-setuptools" thực sự IS phân phối, vì vậy bạn cũng có thể bỏ qua bước phân phối cụ thể.
Carl Meyer

@ cà phê-máy xay phân phối là một nhánh của các công cụ thiết lập và do đó cung cấp chức năng tương tự (và hơn thế nữa). Đừng bận tâm làm "apt-get install python-setuptools" trừ khi python-setuptools LÀ phân phối (như Carl cho thấy nó có thể), trong đó trường hợp bỏ qua bước 2 & 3.
lambacck

2

@ericholscher nói trên Twitter, "Một trong các tài liệu chính thức .."

Đó là một điểm tuyệt vời, bạn nên làm theo những gì tài liệu nói.

Trích dẫn từ hướng dẫn cài đặt pip chính thức tại http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

✓ Đây là lựa chọn tốt nhất nếu bạn không muốn dựa vào các gói phân phối.
Tobu

2

Bắt đầu từ các gói phân phối, bạn có thể sử dụng:

sudo apt-get install python-virtualenv

cho phép bạn tạo Virtualenv, hoặc

sudo apt-get install python{,3}-pip

cho phép bạn cài đặt các gói tùy ý vào thư mục chính của mình.

Nếu bạn đã quen với virtualenv, lệnh đầu tiên cung cấp cho bạn mọi thứ bạn cần (hãy nhớ rằng pip được đóng gói và sẽ được cài đặt trong bất kỳ virtualenv nào bạn tạo).

Nếu bạn chỉ muốn cài đặt các gói, lệnh thứ hai cung cấp cho bạn những gì bạn cần. Sử dụng pip như thế này:

pip install --user something

và đặt một cái gì đó như

PATH=~/.local/bin:$PATH

trong của bạn ~/.bashrc.


Nếu bản phân phối của bạn là cũ và bạn không muốn sử dụng các gói của nó (có thể là ngoại trừ bản thân Python), bạn có thể tải xuống virtualenv, dưới dạng tarball hoặc dưới dạng tập lệnh độc lập:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

Nếu bản phân phối của bạn thuộc loại lợi hại hơn, Python3.3 có các khả năng giống như virtualenv được tích hợp sẵn:

python3 -m venv ./venv

Điều này chạy nhanh hơn, nhưng các công cụ thiết lập và pip không được bao gồm.


2

Để cài đặt pip trên mac (osx), một lớp lót sau đây rất phù hợp với tôi:

sudo easy_install pip

2

Trong Raspbian, thậm chí không cần phải đề cập đến python2.7. Thật vậy, đây là cách tốt nhất để cài đặt pip nếu phiên bản python nhỏ hơn 2.7.9.

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Cảm ơn @ tal-weiss



1

Tôi sử dụng get-pip và virtualenv-burrito để cài đặt tất cả những thứ này. Không chắc liệu python-setuptools có được yêu cầu hay không.

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash


0

Phương pháp cũ là tốt. Vấn đề duy nhất tôi có thể thấy là bạn có thể kết thúc với một phiên bản setuptools cũ (nếu kho lưu trữ apt không được cập nhật ..

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.