Python มีระบบการจัดการแพ็กเกจ / โมดูลเหมือนกับ Ruby ที่มี rubygems gem install packagename
หรือไม่?
ในการติดตั้งโมดูล Pythonฉันเห็นการอ้างอิงpython setup.py install
เท่านั้น แต่คุณต้องหาแพ็คเกจก่อน
Python มีระบบการจัดการแพ็กเกจ / โมดูลเหมือนกับ Ruby ที่มี rubygems gem install packagename
หรือไม่?
ในการติดตั้งโมดูล Pythonฉันเห็นการอ้างอิงpython setup.py install
เท่านั้น แต่คุณต้องหาแพ็คเกจก่อน
คำตอบ:
มีนาคม 2014 : ข่าวดี! Python 3.4มาพร้อมกับ Pip Pip เป็นผู้จัดการแพคเกจมาตรฐานของพฤตินัยมานานแล้ว คุณสามารถติดตั้งแพ็คเกจดังนี้:
pip install httpie
Wahey! นี่เป็นคุณสมบัติที่ดีที่สุดของ Python ทุกรุ่น มันทำให้ทุกคนในชุมชนสามารถเข้าถึงห้องสมุดได้ มือใหม่จะไม่ถูกแยกออกจากการใช้ห้องสมุดชุมชนอีกต่อไปด้วยความยากลำบากในการตั้งค่า
อย่างไรก็ตามยังคงมีความผิดหวังอย่างมากกับประสบการณ์บรรจุภัณฑ์ Python พวกเขาทำให้ Python ไม่รู้จักสำหรับมือใหม่มาก นอกจากนี้ประวัติศาสตร์อันยาวนานของการถูกทอดทิ้ง (เช่นไม่ได้จัดส่งกับผู้จัดการแพคเกจเป็นเวลา 14 ปีจาก Python 2.0 ถึง Python 3.3) ได้สร้างความเสียหายให้กับชุมชน ฉันอธิบายทั้งสองด้านล่าง
สิ่งสำคัญคือต้องเข้าใจว่าในขณะที่ผู้ใช้ที่มีประสบการณ์สามารถแก้ไขปัญหาเหล่านี้ได้ แต่พวกเขาเป็นอุปสรรคสำคัญสำหรับผู้ที่เพิ่งเริ่มใช้ Python ในความเป็นจริงความยากลำบากและความไม่เป็นมิตรกับผู้ใช้โดยทั่วไปมีแนวโน้มที่จะขัดขวางพวกเขาหลายคน
ทุกภาษาที่มีตัวจัดการแพคเกจมีที่เก็บอย่างเป็นทางการ (หรือกึ่งทางการ) สำหรับชุมชนเพื่อดาวน์โหลดและเผยแพร่แพ็คเกจ Python มีดัชนีแพ็คเกจ Python คือ PyPI https://pypi.python.org/pypi
ลองเปรียบเทียบหน้าเว็บกับหน้า RubyGems และ Npm (ตัวจัดการแพ็คเกจ Node)
rails
express
simplejson
คุณจะเห็นหน้า RubyGems และ Npm เริ่มต้นด้วยคำอธิบายหนึ่งบรรทัดของแพคเกจจากนั้นคำแนะนำที่เป็นมิตรขนาดใหญ่วิธีการติดตั้ง
ในขณะเดียวกันความฉิบหายของผู้ใช้ Python ผู้เคราะห์ร้ายที่เรียกดู PyPI อย่างไร้เดียงสา ในhttps://pypi.python.org/pypi/simplejson/พวกเขาจะไม่พบคำแนะนำที่เป็นประโยชน์เช่นนั้น อย่างไรก็ตามมีลิงค์ 'ดาวน์โหลด' สีเขียวขนาดใหญ่ ไม่มีเหตุผลที่จะติดตามมัน อ๊ะพวกเขาคลิก! เบราว์เซอร์ของพวกเขาดาวน์โหลด.tar.gz
ไฟล์ ผู้ใช้ Windows หลายคนไม่สามารถเปิดได้ แต่ถ้าพวกเขาพยายามอย่างหนักในที่สุดพวกเขาก็สามารถดึงมันออกมาจากนั้นก็ทำงานsetup.py
และในที่สุดด้วยความช่วยเหลือของ Google setup.py install
บางคนจะยอมแพ้และบูรณาการล้อ ..
แน่นอนว่าทั้งหมดนี้ผิด ง่ายที่สุดวิธีการติดตั้งแพคเกจอยู่กับคำสั่ง Pip แต่ PyPI ไม่ได้พูดถึง Pip แต่มันนำพวกเขาไปสู่เส้นทางที่เก่าแก่และน่าเบื่อ
Numpy เป็นหนึ่งในห้องสมุดยอดนิยมของไพ ธ อน ลองติดตั้งด้วย Pip คุณจะได้รับข้อความแสดงข้อผิดพลาด:
ข้อผิดพลาด: ไม่พบ vcvarsall.bat
กำลังพยายามแก้ไขที่เป็นหนึ่งในคำถามยอดนิยมใน Stack Overflow: " ข้อผิดพลาด: ไม่พบ vcvarsall.bat "
ไม่กี่คนที่ประสบความสำเร็จ
สำหรับการเปรียบเทียบในสถานการณ์เดียวกันทับทิมพิมพ์ข้อความนี้ซึ่งอธิบายสิ่งที่เกิดขึ้นและวิธีแก้ไข:
โปรดอัปเดต PATH ของคุณเพื่อรวมเครื่องมือสร้างหรือดาวน์โหลด DevKit จากhttp://rubyinstaller.org/downloadsและทำตามคำแนะนำที่http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
Ruby และ Nodejs มาพร้อมกับผู้จัดการแพคเกจเต็มรูปแบบ, Gem (ตั้งแต่ปี 2007) และ Npm (ตั้งแต่ปี 2011) และมีชุมชนการแบ่งปันที่ได้รับการอบรมเป็นศูนย์กลาง GitHub Npm ทำให้แพ็คเกจการประกาศเป็นเรื่องง่ายเหมือนกับการติดตั้งแพคเกจนั้นมีแพคเกจ 64kอยู่แล้ว RubyGems รายการแพคเกจ 72K เคารพหลามรายการดัชนีแพคเกจเพียง 41K
บินผ่านหน้าคำขวัญ " รวมแบตเตอรี่ " ของมัน Python จัดส่งโดยไม่มีผู้จัดการแพ็คเกจจนถึงปี 2014
จนกระทั่ง Pip easy_install
มาตรฐานพฤตินัยเป็นคำสั่ง มันไม่เพียงพอละห้อย คำสั่ง was ไม่มีคำสั่งให้ถอนการติดตั้งแพ็กเกจ
พิพเป็นการปรับปรุงครั้งใหญ่ มันมีคุณสมบัติส่วนใหญ่ของ Ruby's Ruby น่าเสียดายที่ Pip เป็น - จนกระทั่งเมื่อไม่นานมานี้ - ติดตั้งยาก ความจริงแล้วปัญหายังคงเป็นคำถาม Python อันดับต้น ๆ ของ Stack Overflow: " ฉันจะติดตั้ง pip บน Windows ได้อย่างไร "
gem install X
ดูเหมือนว่าจะใช้ได้กับทุกแพลตฟอร์ม ดังนั้นพวกเขาจัดการเรื่องนี้สำหรับอัญมณีที่ต้องมีการรวบรวมรหัส C บน Windows ได้อย่างไร?
Python Package Index (PyPI)ดูเหมือนจะเป็นมาตรฐาน:
pip install MyProject
pip install --upgrade MyProject
pip install MyProject==1.0
คุณสามารถติดตั้งตัวจัดการแพ็คเกจได้ดังนี้:
curl -O http://python-distribute.org/distribute_setup.py
python distribute_setup.py
easy_install pip
อ้างอิง:
และเพื่อให้ความแตกต่างมีpipด้วย
ในฐานะนักพัฒนา Ruby และ Perl และการเรียนรู้ -Python ผู้ชายฉันไม่พบ easy_install หรือ pip ที่เทียบเท่ากับ RubyGems หรือ CPAN
ฉันมักจะให้ระบบการพัฒนาของฉันใช้โมดูลรุ่นล่าสุดในขณะที่นักพัฒนาอัปเดตและหยุดระบบการผลิตของฉันในรุ่นที่กำหนด ทั้ง RubyGems และ CPAN ทำให้ง่ายต่อการค้นหาโมดูลโดยการแสดงรายการสิ่งที่มีอยู่แล้วติดตั้งและอัปเดตทีละรายการหรือเป็นกลุ่มหากต้องการ
easy_install และ pip ทำให้ง่ายต่อการติดตั้งโมดูลเมื่อฉันค้นหามันผ่านการค้นหาเบราว์เซอร์หรือเรียนรู้เกี่ยวกับมันด้วยวิธีอื่น แต่พวกเขาจะไม่บอกฉันว่ามีอะไรบ้าง ฉันสามารถตั้งชื่อโมดูลที่จะอัปเดตได้อย่างชัดเจน แต่แอปจะไม่บอกฉันว่าได้รับการปรับปรุงหรือไม่พวกเขาจะอัปเดตทุกอย่างเป็นจำนวนมากหากฉันต้องการ
ดังนั้นฟังก์ชั่นพื้นฐานมีอยู่ใน pip และ easy_install แต่มีคุณสมบัติที่ขาดหายไปซึ่งฉันต้องการดูว่าจะทำให้ใช้งานได้ง่ายขึ้นและใช้งานได้ดีกว่าเสมอกับ CPAN และ RubyGems
มีอย่างน้อยสองeasy_installและทายาทpip
อย่างน้อยช่วงปลายปี 2014 การแจกจ่ายAnaconda Python ของAn งูonda Analyticsกับผู้จัดการแพคเกจcondaควรได้รับการพิจารณา ช่วยแก้ปัญหาร้ายแรงส่วนใหญ่ที่คนใช้กับ Python โดยทั่วไป (การจัดการเวอร์ชัน Python ที่แตกต่างกัน, การอัพเดตเวอร์ชัน Python, การจัดการแพ็คเกจ, สภาพแวดล้อมเสมือนจริง, การทำงานร่วมกันของ Windows / Mac) ในการดาวน์โหลดหนึ่งครั้ง
มันช่วยให้คุณทำทุกอย่างที่คุณต้องการด้วย Python โดยไม่ต้องเปลี่ยนระบบเลย วิธีการแก้ปัญหาที่ต้องการของฉันต่อไปคือ pip + virtualenv แต่คุณอาจจะต้องติดตั้ง virtualenv ในระบบของคุณหลาม (และระบบของคุณงูใหญ่อาจจะไม่เป็นรุ่นที่คุณต้องการ) หรือสร้างจากแหล่ง อนาคอนด้าทำให้กระบวนการทั้งหมดเพียงแค่คลิกปุ่มเช่นเดียวกับการเพิ่มคุณสมบัติอื่น ๆ อีกมากมาย
easy_install
โปรดตรวจสอบวันที่ก่อน นั่นเป็นคำแนะนำที่ถูกต้องเมื่อมันได้รับเกือบ 7 ปีที่ผ่านมา ฉันไม่คิดว่าพวกเราผู้ตอบจะต้องทบทวนสิ่งนี้เพื่ออัพเดทอยู่เสมอดังนั้นการ downvoting จึงเป็นเรื่องโง่
มันเรียกว่า setuptools คุณรันด้วยคำสั่ง "easy_install"
คุณสามารถค้นหาไดเรกทอรีได้ที่http://pypi.python.org/
ฉันไม่เห็นMacPortsหรือHomebrew ที่กล่าวถึงในคำตอบอื่น ๆ ที่นี่ แต่เนื่องจากฉันเห็นพวกเขากล่าวถึงที่อื่น ๆ ใน Stack Overflow สำหรับคำถามที่เกี่ยวข้องฉันจะเพิ่ม US $ 0.02 ของตัวเองเพื่อให้คนจำนวนมากมองว่าMacPortsไม่ใช่แค่แพ็คเกจ ผู้จัดการสำหรับแพ็คเกจโดยทั่วไป (ณ วันนี้พวกเขาแสดงรายการแพคเกจ / พอร์ต 16311, 2931 ที่ตรงกับ "python" แม้ว่าจะเป็นเพียงสำหรับ Macs) แต่ยังเป็นตัวจัดการแพ็คเกจที่ดี (อาจจะดีกว่า) สำหรับแพ็คเกจ / โมดูล Python:
"... วิธีการที่นักพัฒนางูหลาม Mac ใช้ในการจัดการโมดูลของพวกเขาคืออะไร"
ฉันยังคงถกเถียงกันว่าควรจะใช้ MacPort ด้วยตัวเองหรือไม่ แต่ตอนนี้ฉันกำลังโน้มตัวไปในทิศทางนั้น
pip install <your_favorite_package>
ใน Windows ให้ติดตั้งhttp://chocolatey.org/จากนั้น
choco install python
เปิดหน้าต่าง cmd ใหม่พร้อมกับ PATH ที่อัพเดท ถัดไปทำ
choco install pip
หลังจากนั้นคุณสามารถ
pip install pyside
pip install ipython
...
เนื่องจากไม่มีใครพูดถึงpipenvที่นี่ฉันอยากจะอธิบายมุมมองของฉันว่าทำไมทุกคนควรใช้มันเพื่อจัดการแพ็กเกจหลาม
ดังที่ @ColonelPanic กล่าวถึงมีปัญหาหลายประการเกี่ยวกับPython Package Indexและpipและvirtualenvด้วย
Pipenvแก้ปัญหาส่วนใหญ่ด้วย pip และให้คุณสมบัติเพิ่มเติมด้วย
Pipenv มีวัตถุประสงค์เพื่อแทนที่ pip และ virtualenv ซึ่งหมายความว่า pipenv จะสร้างสภาพแวดล้อมเสมือนจริงแยกต่างหากโดยอัตโนมัติสำหรับทุกโครงการจึงหลีกเลี่ยงความขัดแย้งระหว่างเวอร์ชันของงูหลาม / แพ็คเกจรุ่นที่แตกต่างกันสำหรับโครงการที่แตกต่างกัน
หากคุณเคยทำงานในโครงการงูหลามมาก่อนคุณจะตระหนักถึงคุณสมบัติเหล่านี้ทำให้การจัดการแพ็คเกจทำได้ง่ายขึ้น
check
ตรวจสอบช่องโหว่ด้านความปลอดภัยและยืนยันว่าเป็นไปตามข้อกำหนด PEP 508 ตามสภาพแวดล้อมปัจจุบัน ( ซึ่งฉันคิดว่าเป็นคุณสมบัติที่ยอดเยี่ยมโดยเฉพาะหลังจากนี้ - แพ็คเกจที่เป็นอันตรายใน PyPi )graph
จะแสดงกราฟการพึ่งพาของการอ้างอิงที่ติดตั้งของคุณคุณสามารถอ่านเพิ่มเติมได้ที่นี่ - Pipenv
คุณสามารถค้นหาเอกสารการติดตั้งได้ที่นี่
PS: ถ้าคุณชอบทำงานกับคำขอ Python Package คุณยินดีที่จะรู้ว่าpipenvนั้นเป็นผู้พัฒนารายเดียวกันKenneth Reitz
ในปี 2019 บทกวีเป็นผู้จัดการแพคเกจและการพึ่งพาที่คุณกำลังมองหา
https://github.com/sdispater/poetry#why
มันทันสมัยเรียบง่ายและเชื่อถือได้
บทกวีคือสิ่งที่คุณกำลังมองหา จะดูแลการจัดการการพึ่งพาสภาพแวดล้อมเสมือนจริงทำงาน