วิธีที่ "ต้องการ" อย่างเป็นทางการในการติดตั้ง pip และ Virtualenv ทั้งระบบคืออะไร?


87

นี่เป็นสิ่งที่ผู้คนมักจะแนะนำบ่อยที่สุด:

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

หรือสิ่งนี้ซึ่งฉันได้รับจาก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 ...

หรือสิ่งที่แตกต่างอย่างสิ้นเชิง?

คำตอบ:


93

หากคุณสามารถติดตั้ง Python ล่าสุด (2.7.9 ขึ้นไป) Pip มาพร้อมกับมันได้แล้ว ดู: https://docs.python.org/2.7//installing/index.html
หากไม่:
อัปเดต (จากบันทึกประจำรุ่น):

เริ่มต้นด้วย v1.5.1 pip ไม่ต้องการ setuptools ก่อนที่จะเรียกใช้ get-pip.py นอกจากนี้หากยังไม่ได้ติดตั้ง setuptools (หรือแจกจ่าย) get-pip.py จะติดตั้ง setuptools ให้คุณ

ตอนนี้ฉันใช้งานปกติ:

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

คำแนะนำในการติดตั้งอย่างเป็นทางการ: http://pip.readthedocs.org/en/latest/installing.html#install-pip

แก้ไข 25 ก.ค. 2556:
เปลี่ยน URL สำหรับการติดตั้ง setuptools

แก้ไข 10 ก.พ. 2557:
ลบการติดตั้ง setuptools (ขอบคุณ @Ciantic)

แก้ไข 26 มิ.ย. 2557:
อัปเดต URL อีกครั้ง (ขอบคุณ @LarsH)

แก้ไข 1 มี.ค. 2558:
ตอนนี้ Pip มาพร้อมกับ Python แล้ว


1
คุณจะติดตั้ง setuptools-0.8 ที่ไหน / อย่างไร ดูเหมือนว่าคุณจะเพิ่งซื้อez_setup.pypip "รุ่นน้ำหนักเบา" ฉันจะทำเหมือนกัน แต่กลัวว่ามันจะพังในอนาคตอันใกล้และฉันจะติดอยู่ที่นี่อีกครั้ง (เหมือนที่เคยทำ)
Steven Lu

3
อ่าดูเหมือนคำสั่งที่บอกว่าให้ทำตามที่คุณพูดนี่ถูกต้องตามทำนองคลองธรรม ไม่เป็นไรแล้ว
Steven Lu

4
มีวิธีใหม่ (?) ในการทำสิ่งนี้การติดตั้ง pip และ setuptools โดยอัตโนมัติ: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py จากนั้น python get-pip.py(อาจต้องใช้ sudo)
Ciantic

3
ตอนนี้ URL ของ get-pip.py ดูเหมือนจะเปลี่ยนเป็นhttps://bootstrap.pypa.io/get-pip.py. อาจดีกว่าเพียงแค่เชื่อมโยงไปยังคำแนะนำอย่างเป็นทางการ
LarsH

2
ปล. ขอบคุณสำหรับคำตอบนี้ - ช่วยให้ฉันติดตั้ง pip ได้
LarsH

21

http://www.pip-installer.org/en/latest/installing.htmlเป็นคำตอบที่ยอมรับได้สำหรับคำถามนี้

โดยเฉพาะคำแนะนำทั้งระบบคือ:

$ 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

ส่วนที่ยกมาในคำถามคือvirtualenvคำแนะนำมากกว่าคำแนะนำทั้งระบบ easy_installคำแนะนำได้รับรอบนาน แต่ก็ไม่จำเป็นต้องทำแบบนั้นอีกเลย


แก้ไขเพื่อชี้แจงความแตกต่างระหว่างคำแนะนำทั้งระบบในหน้านั้นและvirtualenvคำแนะนำที่อ้างถึงในคำถาม
ncoghlan

1
อัปเดต: การแจกจ่ายไม่ทำงานอีกต่อไปสำหรับ pip! ดูstackoverflow.com/a/17601159/78234
Tal Weiss

1
โปรดทราบว่าคำแนะนำในหน้าที่เชื่อมโยงไม่ตรงกับคำแนะนำที่นี่อีกต่อไป ที่ดีที่สุดคือไปที่หน้าอย่างเป็นทางการและทำตามที่พวกเขาพูด (และทำไมใคร ๆ ถึงสงสัยพวกเขาตั้งแต่แรก?!)
Neil Traft

แนวทางที่อธิบายไว้ในคำตอบนี้ล้าสมัยและดูเหมือนจะใช้ไม่ได้อีกต่อไป
cel

16

คำตอบนี้มาจาก @webology บน Twitter:

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

บันทึกที่เพิ่มของฉัน:

  • บน Mac / Windows (และ Linux หาก apt repo ล้าสมัย) คุณจะแทนที่ขั้นตอนแรกด้วยการดาวน์โหลด setuptools จากhttp://pypi.python.org/pypi/setuptools
  • ใน Windows คุณจะต้องละเว้น Virtualenvwrapper จากขั้นตอนสุดท้ายและติดตั้งด้วยตนเอง ฉันไม่รู้ว่าจะมีวิธีทำอย่างไรหากไม่มี Cygwin แต่ฉันหวังอย่างนั้น

1
หากเงื่อนไขคือคุณต้องการติดตั้ง pip และ Virtualenv ทั้งระบบนี่คือสิ่งที่ฉันทำโดยทั่วไป คำแนะนำจาก pip docs ที่ให้เป็นทางเลือกที่สองในคำถามนั้นขึ้นอยู่กับหลักฐานที่ว่าเรากำลังหลีกเลี่ยงการติดตั้งอะไรก็ตามทั้งระบบ
Carl Meyer

3
คุณสามารถแทนที่สองคำสั่งแรกด้วย$ sudo apt-get install python-pip. การติดตั้ง python-pip จะติดตั้ง python-setuptools ด้วย
Dennis

4

บน Ubuntu 12.04 ฉันโชคดีแค่ใช้ตัวจัดการแพ็คเกจ:

sudo apt-get install python-pip virtualenvwrapper

1
เวอร์ชันแพ็กเกจล้าสมัยไปแล้ว 12.04 python-pip 1.0-1build1ซึ่งเปิดตัวในต้นปี 2554 และวางvirtualenvwrapper 2.11.1-21จำหน่ายมกราคม 2555 คำตอบของ @Richard Jones จะทำให้คุณได้รับข้อมูลล่าสุด
JCotton

3

ไม่มีวิธีที่ต้องการ - ทุกอย่างขึ้นอยู่กับความต้องการของคุณ บ่อยครั้งที่คุณต้องมีล่าม Python ที่แตกต่างกันในระบบไม่ว่าด้วยเหตุผลใดก็ตาม ในกรณีนี้คุณต้องติดตั้งสิ่งต่างๆแยกกันสำหรับล่ามแต่ละคน นอกเหนือจากนั้น: ฉันชอบติดตั้งสิ่งต่างๆด้วยตัวเองแทนที่จะขึ้นอยู่กับสิ่งที่บรรจุไว้ล่วงหน้าบางครั้งทำให้เกิดปัญหา - แต่นั่นเป็นเพียงความคิดเห็นเดียวที่เป็นไปได้


ฉันกำลังถามเกี่ยวกับวิธีการที่ต้องการโดยเฉพาะเพราะฉันจะให้คำแนะนำเหล่านี้กับคน 20 คนและไม่ต้องการให้พวกเขาเข้าใจผิด
เครื่องบดกาแฟ

3

คำถามนี้ไม่มี "คำตอบ" เพียงคำเดียว แต่มีแนวคิดที่เป็นประโยชน์บางอย่างที่สามารถช่วยคุณในการตัดสินใจได้

คำถามแรกที่ต้องตอบในกรณีการใช้งานของคุณคือ "ฉันต้องการใช้ระบบ Python หรือไม่" หากคุณต้องการใช้ Python ที่แจกจ่ายกับระบบปฏิบัติการของคุณการใช้วิธีการติดตั้ง apt-get อาจใช้ได้ดี ทั้งนี้ขึ้นอยู่กับวิธีการแจกจ่ายระบบปฏิบัติการคุณยังคงต้องถามคำถามเพิ่มเติมเช่น "ฉันต้องการติดตั้งแพ็คเกจนี้หลายเวอร์ชันหรือไม่" ถ้าคำตอบคือใช่อาจไม่ใช่ความคิดที่ดีที่จะใช้สิ่งที่ต้องการ Dpkg ค่อนข้างจะคลายไฟล์เก็บถาวรที่รูทของระบบไฟล์ดังนั้นจึงขึ้นอยู่กับผู้ดูแลแพ็กเกจเพื่อให้แน่ใจว่าแพคเกจติดตั้งอย่างปลอดภัยภายใต้สมมติฐานที่น้อยมาก ในกรณีของแพ็คเกจเดเบียนส่วนใหญ่ฉันจะถือว่า (ใครบางคนสามารถแก้ไขฉันได้ที่นี่) ว่าพวกเขาเพียงแค่แก้ปัญหาและจัดหาแพ็คเกจระดับบนสุด

ตัวอย่างเช่นสมมติว่าแพคเกจคือ "virtualenv" /usr/lib/python2.x/site-packages/virtualenvคุณจะจบลงด้วย หากคุณติดตั้งด้วยeasy_installคุณจะได้รับสิ่งที่ต้องการ/usr/lib/python2.x/site-packages/virtualenv.egg-linkซึ่งอาจชี้ไป/usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggที่ไดเร็กทอรีหรือไข่ซิป Pip ทำสิ่งที่คล้ายกันแม้ว่าจะไม่ใช้ไข่ แต่จะวางแพ็คเกจระดับบนสุดไว้ในlibไดเรกทอรีโดยตรง

ฉันอาจจะออกนอกเส้นทาง แต่ประเด็นคือแต่ละวิธีคำนึงถึงความต้องการที่แตกต่างกัน นี่คือเหตุผลที่เครื่องมือเช่น Virtualenv มีประโยชน์เนื่องจากช่วยให้คุณสามารถแซนด์บ็อกซ์ไลบรารี Python ของคุณเพื่อให้คุณสามารถใช้ไลบรารีและเวอร์ชันต่างๆร่วมกันได้

Setuptools ยังอนุญาตให้ติดตั้งแพ็กเกจเป็นหลายทางซึ่งหมายความว่าจะไม่มีการdule_name.egg-linkสร้างโมเอกพจน์ ในการนำเข้าแพ็กเกจเหล่านั้นคุณต้องใช้ pkg_resources และ__import__ฟังก์ชัน

กลับไปที่คำถามเดิมของคุณหากคุณพอใจกับ python ของระบบและวางแผนที่จะใช้ Virtualenv และ pip ​​เพื่อสร้างสภาพแวดล้อมสำหรับแอพพลิเคชั่นที่แตกต่างกันการติดตั้ง Virtualenv และ / หรือ pip ที่ระดับระบบโดยใช้ apt-get นั้นเหมาะสมอย่างยิ่ง ข้อควรระวังอย่างหนึ่งก็คือหากคุณวางแผนที่จะอัปเกรดการกระจาย Python ของคุณสิ่งนั้นอาจมีผลกระเพื่อมผ่านทาง Virtualenvs ของคุณหากคุณเชื่อมโยงกลับไปยังแพ็คเกจไซต์ระบบของคุณ

ฉันควรพูดถึงว่าไม่มีตัวเลือกใดดีไปกว่าตัวเลือกอื่น ๆ พวกเขาใช้แนวทางที่แตกต่างกัน การใช้เวอร์ชันระบบเป็นวิธีที่ยอดเยี่ยมในการติดตั้งแอปพลิเคชัน Python แต่อาจเป็นวิธีที่ยากมากในการพัฒนาด้วย Python การติดตั้งและ setuptools ที่ง่ายดายนั้นสะดวกมากในโลกที่ไม่มี Virtualenv แต่ถ้าคุณต้องการใช้ไลบรารีเดียวกันเวอร์ชันต่างๆก็จะค่อนข้างเทอะทะ Pip และ Virtualenv ทำหน้าที่เหมือนเครื่องเสมือนจริงๆ แทนที่จะดูแลติดตั้งสิ่งต่างๆเคียงข้างกันคุณเพียงสร้างสภาพแวดล้อมใหม่ทั้งหมด ข้อเสียคือ 30+ อัจฉริยะในภายหลังคุณอาจใช้พื้นที่ดิสก์ไปแล้วเล็กน้อยและทำให้ระบบไฟล์ของคุณรก

อย่างที่คุณเห็นด้วยตัวเลือกมากมายจึงเป็นเรื่องยากที่จะบอกว่าจะใช้วิธีใด แต่ด้วยการตรวจสอบกรณีการใช้งานของคุณเล็กน้อยคุณควรจะสามารถหาวิธีที่ใช้ได้ผล



2

เนื่องจาก Virtualenvs มี pip โดยค่าเริ่มต้นฉันจึงแทบไม่เคยติดตั้ง pip ทั่วโลกเลย สิ่งที่ฉันทำดูเหมือนมากกว่า:

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

จากนั้นฉันก็ดำเนินการติดตั้งและตั้งค่า Virtualenvwrapper ตามที่ฉันชอบและไป นอกจากนี้ยังอาจคุ้มค่าที่จะดู Virtualenv-burrito ของ Jeremy Avnet:

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


3
จะไปรบกวน python-setuptools ทำไมแล้วแจกเมื่อไหร่ก็ไปแจกได้โดยตรง
lambacck

@lambacck คุณช่วยโพสต์สิ่งที่คุณอธิบายในคำตอบแยกต่างหากได้ไหม (แม้ว่ามันจะดูซ้ำซากก็ตาม)
เครื่องบดกาแฟ

2
ไม่ต้องพูดถึงว่าใน Ubuntu ล่าสุด (และ Debian ด้วยหรือไม่ไม่แน่ใจ) แพ็คเกจ "python-setuptools" แจกจ่ายจริงดังนั้นคุณสามารถข้ามขั้นตอนการแจกจ่ายเฉพาะได้เช่นกัน
Carl Meyer

@ เครื่องบดกาแฟกระจายเป็นส้อมของ setuptools และด้วยเหตุนี้ฟังก์ชันการทำงานเดียวกัน (และอื่น ๆ ) อย่ากังวลกับการทำ "apt-get install python-setuptools" เว้นแต่ python-setuptools IS แจกจ่าย (ตามที่ Carl ระบุว่าอาจเป็น) ซึ่งในกรณีนี้ให้ข้ามขั้นตอนที่ 2 และ 3 ไป
lambacck

2

@ericholscher กล่าวใน Twitter ว่า "หนึ่งในเอกสารทางการ .. "

เป็นจุดที่ดีคุณควรทำตามที่เอกสารบอก

อ้างจากคำแนะนำการติดตั้ง pip อย่างเป็นทางการที่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 ...

✓นี่เป็นตัวเลือกที่ดีที่สุดหากคุณไม่ต้องการพึ่งพาแพ็คเกจการแจกจ่าย
Tobu

2

เริ่มจากแพ็คเกจ distro คุณสามารถใช้:

sudo apt-get install python-virtualenv

ซึ่งช่วยให้คุณสร้าง Virtualenvs หรือ

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

ซึ่งช่วยให้คุณสามารถติดตั้งแพ็คเกจตามอำเภอใจไปยังโฮมไดเร็กทอรี

หากคุณเคยชินกับ Virtualenv คำสั่งแรกจะให้ทุกสิ่งที่คุณต้องการ (จำไว้ว่า pip ถูกรวมเข้าด้วยกันและจะติดตั้งใน Virtualenv ที่คุณสร้างขึ้น)

หากคุณต้องการติดตั้งแพ็กเกจคำสั่งที่สองจะให้สิ่งที่คุณต้องการ ใช้ pip เช่นนี้:

pip install --user something

และใส่สิ่งที่ชอบ

PATH=~/.local/bin:$PATH

ใน~/.bashrcไฟล์.


หาก distro ของคุณเป็นแบบโบราณและคุณไม่ต้องการใช้แพ็คเกจเลย (ยกเว้น Python เอง) คุณสามารถดาวน์โหลด Virtualenv ไม่ว่าจะเป็น tarball หรือสคริปต์แบบสแตนด์อโลน:

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

หาก distro ของคุณเป็นชนิดที่มีเลือดออกมากขึ้น Python3.3 มีความสามารถในตัวที่คล้ายกับ Virtualenv:

python3 -m venv ./venv

วิธีนี้ทำงานได้เร็วขึ้น แต่ไม่รวม setuptools และ pip



2

ใน Raspbian python2.7มีก็ไม่ต้องพูดถึง นี่เป็นวิธีที่ดีที่สุดในการติดตั้ง pip หากเวอร์ชัน python น้อยกว่า 2.7.9

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

ขอบคุณข้อมูล @ tal-weiss



1

ฉันใช้ get-pip และ Virtualenv-burrito เพื่อติดตั้งทั้งหมดนี้ ไม่แน่ใจว่าต้องใช้ python-setuptools หรือไม่

# 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

วิธีการเดิมก็ใช้ได้ ปัญหาเดียวที่ฉันเห็นคือคุณอาจลงเอยด้วย setuptools เวอร์ชันเก่า (หากที่เก็บ apt ไม่ได้รับการอัปเดต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.