สรุป
มีสามหมวดหมู่ทั่วไปของโมดูลที่คุณติดต่อด้วย:
- โปรแกรมที่สนับสนุนเหล่านั้นได้รับการติดตั้งสำหรับผู้ใช้ทั้งหมดที่มีระบบแพ็กเกจระบบปฏิบัติการ (ซึ่งอาจรวมถึงเครื่องมือและไลบรารีที่ใช้โดยการเขียนโปรแกรมบุคคลใน Python ดูด้านล่าง) สำหรับสิ่งเหล่านี้คุณใช้แพ็กเกจระบบปฏิบัติการที่คุณสามารถทำได้และ
pip
ติดตั้งลงในไดเรกทอรีระบบที่จำเป็น
- โปรแกรมที่สนับสนุนเหล่านั้นติดตั้งโดยผู้ใช้เฉพาะสำหรับการใช้งานของเธอเองและสำหรับบางแง่มุมของการใช้ "วันต่อวัน" ของเธอในการใช้งาน Python เป็นภาษาสคริปต์ สำหรับสิ่งเหล่านี้เธอใช้
pip --user
อาจเป็นpyenvหรือpythonzและเครื่องมือและยุทธวิธีที่คล้ายกัน
- ผู้ที่สนับสนุนการพัฒนาและใช้งานแอพพลิเคชั่นเฉพาะ สำหรับสิ่งเหล่านี้คุณใช้
virtualenv
(หรือเครื่องมือที่คล้ายกัน)
แต่ละระดับที่นี่อาจได้รับการสนับสนุนจากระดับก่อนหน้า ตัวอย่างเช่นผู้ใช้ของเราใน (2) อาจพึ่งพาตัวแปลภาษา Python ที่ติดตั้งผ่านแพ็คเกจระบบปฏิบัติการ
ไปที่นี้ในรายละเอียดอีกเล็กน้อย:
โปรแกรมระบบและแพ็คเกจ
โปรแกรมที่เขียนด้วย Python ที่คุณต้องการ "เพียงแค่รัน" นั้นง่าย: เพียงใช้เครื่องมือติดตั้งระบบปฏิบัติการและให้พวกเขานำสิ่งที่พวกเขาต้องการ นี่ไม่ต่างจากโปรแกรมที่ไม่ใช่ Python สิ่งนี้มีแนวโน้มที่จะนำเครื่องมือ / ไลบรารี่ของ Python มาใช้ (เช่น Python interpreter!) ที่ผู้ใช้บนเครื่องของคุณอาจเริ่มพึ่งพา นี่ไม่ใช่ปัญหาตราบใดที่พวกเขาเข้าใจการพึ่งพาและโดยหลักแล้วรู้วิธีทางเลือกในการจัดการกับโฮสต์ที่ไม่ได้ให้การพึ่งพาเหล่านั้น
ตัวอย่างที่พบบ่อยและเรียบง่ายของการพึ่งพาดังกล่าวเป็นบางส่วนของสคริปส่วนตัวของฉันในการเริ่มต้นด้วย~/.local/bin/
#!/usr/bin/env python
สิ่งเหล่านี้จะทำงานได้ดี (ตราบใดที่มันทำงานภายใต้ Python 2) บน RH / CentOS 7 และการติดตั้ง Ubuntu ส่วนใหญ่ (แต่ไม่ทั้งหมด) พวกเขาจะไม่อยู่ภายใต้การติดตั้ง Debian ขั้นพื้นฐานหรือบน Windows มากเท่าที่ฉันไม่ชอบสภาพแวดล้อมส่วนบุคคลของฉันมีมากในทางของการพึ่งพาแพคเกจระบบปฏิบัติการ (ฉันทำงานในระบบปฏิบัติการที่แตกต่างกันจำนวนมาก) สิ่งเช่นนี้ฉันพบว่าค่อนข้างยอมรับได้; แผนสำรองของฉันในโฮสต์หายากที่ไม่มีระบบ Python และไม่สามารถรับได้คือไปกับระบบผู้ใช้ตามที่อธิบายไว้ด้านล่าง
pip3
คนที่ใช้ล่ามระบบหลามนอกจากนี้ยังจะขึ้นอยู่กับระบบ เกี่ยวกับที่ฉันมักจะวาดเส้นในการพึ่งพาระบบของฉัน ทุกอย่างจากvirtualenv
ข้างหน้าฉันจัดการกับตัวเอง (ตัวอย่างเช่นฉันสคริปต์เปิดใช้งานมาตรฐานอาศัยอยู่กับสิ่งที่pip3
หรือpip
อยู่ในเส้นทาง แต่ดาวน์โหลดสำเนาของตัวเองของvirtualenv
บูตสภาพแวดล้อมเสมือนมันสร้าง
ที่กล่าวว่าอาจมีสถานการณ์ที่เหมาะสมอย่างยิ่งที่จะทำให้มีสภาพแวดล้อมการพัฒนามากขึ้น คุณอาจมีอินเทอร์เฟซ Python ในแพ็คเกจที่ซับซ้อน (เช่น DBMS) ที่คุณต้องการใช้เวอร์ชันระบบของมันและคุณรู้สึกว่ามันดีที่สุดที่คุณจะให้ระบบเลือกรหัสไลบรารี Python ที่คุณจะใช้เพื่อพูดคุยกับมัน หรือคุณอาจปรับใช้โฮสต์จำนวนมากด้วยสภาพแวดล้อมการพัฒนาขั้นพื้นฐานสำหรับคลาส Python และหาวิธีที่ง่ายที่สุดในการทำให้เป็นอัตโนมัติด้วยแพ็คเกจระบบมาตรฐาน
ผู้ใช้โปรแกรมและแพ็คเกจ "แบบวันต่อวัน"
ผู้ใช้อาจมีไลบรารี Python หรือโปรแกรมที่ไม่เหมาะกับสภาพแวดล้อมเสมือนเพราะพวกเขาต้องการที่จะช่วยสร้างสภาพแวดล้อมเสมือนจริงในสถานที่แรก (เช่นvirtualenvwrapper ) หรือสิ่งที่คุณมักใช้จากบรรทัดคำสั่งแม้ในขณะที่ ทำงานที่ไม่ใช่งูหลาม แม้ว่าพวกเขาจะมีความสามารถในการติดตั้งเวอร์ชันระบบของพวกเขาพวกเขาอาจรู้สึกสะดวกสบายในการติดตั้งของตัวเอง (เช่นเนื่องจากพวกเขาต้องการใช้เครื่องมือเวอร์ชันล่าสุดและการอ้างอิง)
โดยทั่วไปpip --user
คือสิ่งที่ผู้คนจะใช้สำหรับสิ่งนี้แม้ว่าการพึ่งพาบางอย่างเช่นตัวแปล Python เองนั้นต้องการมากกว่านั้น pyenvและpythonzมีประโยชน์สำหรับการสร้างล่ามส่วนตัว (ไม่ว่าจะเป็นการติดตั้ง~/.local/bin
เพื่อเป็นล่ามเริ่มต้นหรืออื่น ๆ ) และแน่นอนว่าใคร ๆ ก็สามารถสร้าง "ด้วยมือ" จากแหล่งที่มาหากห้องสมุด dev พร้อมใช้งาน
ฉันพยายามเก็บชุดขั้นต่ำเปล่าไว้ที่นี่: virtualenvwrapper (เพราะฉันใช้มันตลอดเวลา) และอาจเป็น pip รุ่นล่าสุด ฉันพยายามหลีกเลี่ยงการพึ่งพานอกไลบรารีมาตรฐานหรือบน Python 3 สำหรับสคริปต์ส่วนบุคคลที่ฉันเขียนเพื่อใช้กับโฮสต์จำนวนมาก (แม้ว่าเราจะเห็นว่าฉันสามารถใช้เวลากับสิ่งนั้นได้นานเท่าไหร่ขณะที่ฉันย้ายสคริปต์ส่วนตัวเหล่านี้ไปยัง Python มากขึ้นเรื่อย ๆ )
การพัฒนาแอปพลิเคชันแยกต่างหากและสภาพแวดล้อมรันไทม์
นี่คือสิ่ง virtualenv ปกติ สำหรับการพัฒนาคุณควรใช้ virtualenv เกือบทุกครั้งเพื่อให้แน่ใจว่าคุณไม่ได้ใช้การพึ่งพาระบบหรือมักจะมากกว่าหนึ่งเพื่อทดสอบกับเวอร์ชัน Python ที่แตกต่างกัน
สภาพแวดล้อมเสมือนเหล่านี้ยังเหมาะสำหรับแอปพลิเคชันที่มีการพึ่งพาจำนวนมากซึ่งคุณต้องการหลีกเลี่ยงการสร้างมลพิษให้กับสภาพแวดล้อมผู้ใช้ของคุณ ตัวอย่างเช่นฉันมักจะตั้งค่า virtualenv สำหรับใช้งานJupyter notebooks และอื่น ๆ