ตามที่ระบุไว้ในหน้า wiki ของ Ubuntu บน Railsขอแนะนำให้พลอยจัดการ Rails / Ruby dependencies ของคุณ
การปฏิบัติที่ดีที่สุดกับแพ็คเกจ Python เช่น Django คืออะไร ฉันควรติดตั้งผ่าน apt-get หรือควรให้ easy_install / pip ดึงข้อมูลจาก PyPi?
ตามที่ระบุไว้ในหน้า wiki ของ Ubuntu บน Railsขอแนะนำให้พลอยจัดการ Rails / Ruby dependencies ของคุณ
การปฏิบัติที่ดีที่สุดกับแพ็คเกจ Python เช่น Django คืออะไร ฉันควรติดตั้งผ่าน apt-get หรือควรให้ easy_install / pip ดึงข้อมูลจาก PyPi?
คำตอบ:
มีข้อโต้แย้งหลายประการ:
นี่เป็นเรื่องจริง ตัวอย่างเช่นหากคุณติดตั้งpython-django
ตามที่ฉันมีคุณจะได้รับการปรับปรุงความปลอดภัย นี่เป็นสิ่งที่ดีเพราะคุณต้องรักษาความฉลาดไว้ก่อน แต่คุณยังต้องทดสอบสิ่งต่าง ๆ ก่อนที่คุณจะส่งการอัพเดต (แม้ว่าการทดสอบควรจะดีในแต่ละครั้ง)
คุณสามารถโต้แย้งว่าถ้าคุณใช้pip
คุณอาจไม่เคยตรวจสอบการปรับปรุง
pip
เพื่อให้คุณสามารถใช้เวอร์ชัน "เสถียร" ที่เหมาะสมไม่ต้องสงสัยเลยว่า: repos จะล้าหลังโลกแห่งความจริง Django เป็น 2.0 แต่ repos สำหรับรุ่น LTS ของ Ubuntu (ที่ผู้คนจำนวนมากติดกับเซิร์ฟเวอร์) คุณจะได้รับ 1.8 บน Ubuntu 16.4 lts กับ Python 2 แต่ยังได้รับการอัปเดตความปลอดภัยอยู่
pip
ให้คุณล่าสุดตลอดเวลา คุณเพียงแค่ต้องอัปเดตด้วยตัวเอง
เมื่อคุณอัพเกรดอูบุนตูเป็นเวอร์ชั่นถัดไปมันจะอัพเกรดแพ็คเกจจำนวนมาก หลายสิ่งหลายอย่างเปลี่ยนไป ฉันรู้ว่าใน Django สิ่งนี้หมายความว่าคุณต้องระวังความไม่เข้ากันของรหัสการเลิกใช้ ... แต่สิ่งเดียวกันกับรหัส Python อื่น ๆ ทั้งหมด
สิ่งนี้เป็นจริงสำหรับpip
แต่เมื่อpip
คุณได้ทำสิ่งหนึ่งครั้ง คุณรู้ว่าอะไรเป็นสาเหตุของปัญหาเพื่อให้คุณทราบว่าจะหาการแก้ไขได้ที่ไหน
pip
+ virtualenv
ช่วยให้คุณแยกสิ่งต่าง ๆvirtualenv
ช่วยให้คุณมีสภาพแวดล้อม Python แบบพกพาเล็กน้อย สิ่งนี้ช่วยให้คุณมีสภาพแวดล้อม Python ที่แตกต่างกันมากมายที่ทำงานร่วมกันบนเครื่องเดียวกัน
สิ่งที่เห็นได้ชัดนั้นดูเหมือนจะเป็นการบำรุงรักษาเนื่องจากคุณสามารถจัดการสภาพแวดล้อมในลักษณะเดียวกับที่คุณจัดการรหัส แม้แต่จัดเก็บสภาพแวดล้อมใน VCS ด้วย ... แต่คุณควรจำไว้ว่าการมีสิบสองตัวที่แตกต่างกันvirtualenv
หมายถึงสภาพแวดล้อมทั้งสิบสองที่คุณต้องตรวจสอบและอัปเดต
แก้ไข: หลังจากอัปเกรดอนุกรมที่น่ากลัวบนเซิร์ฟเวอร์เพื่อรับจาก Lucid ไปเป็น Precise ฉันได้เปลี่ยนจาก Apt + pip (nr 1 และ 2) ไปเป็น pure pip + virtualenv (nr. 4) แบบผสม แทนที่จะมี virtualenv หนึ่งตัวต่อไซต์ฉันมีหนึ่งตัวที่ใช้ร่วมกันระหว่างไซต์โหลหรือดังนั้น ตอนนี้ใช้งานได้แล้ว
ฉันต้องเขียนสคริปต์เล็กน้อยเพื่อตรวจสอบสถานะของแพ็คเกจที่ติดตั้งด้วย pip หากมีการปรับปรุงฉันต้องใช้พวกเขาด้วยตนเอง (ซึ่งดีเพราะฉันทดสอบพวกเขาในพื้นที่ใน virtualenv ท้องถิ่น) ทั้งหมดนี้ยังคงเจ็บปวดเล็กน้อยกว่าเดิม แต่ดีกว่ามากในระยะยาว
แพคเกจจากที่เก็บ
เหล่านี้ควรจะติดตั้งเมื่อใดก็ตามที่แอพลิเคชันของคุณอยู่ในวิธีการบางอย่างที่เฉพาะเจาะจงกับอูบุนตู พวกเขารับประกันว่าคุณจะมีเวอร์ชั่นที่เสถียรซึ่งคุณสามารถติดตั้งในเครื่อง Ubuntu ได้และบางครั้งก็เป็นผู้ใหญ่มากกว่าที่คุณได้รับผ่าน pip หากคุณปรับพวงของเซิร์ฟเวอร์อูบุนตูหรือถ้าคุณกำลังเขียนโปรแกรมที่อูบุนตูใช้เหล่านี้ถ้ามี
บางครั้งพวกเขายังมีการดัดแปลงเฉพาะ Ubuntu
pip เทียบกับ easy_install
มีไม่มากที่จะพูดเกี่ยวกับสิ่งเหล่านี้เป็นแฮ็คเกอร์ Django James Bennett ใส่มัน:
กรุณาเพื่อความรักของ Guido ให้หยุดใช้ setuptools และ easy_install และใช้ distutils และ pip แทน
สำหรับการสนทนาในเชิงลึกเกี่ยวกับความแตกต่างให้ดูที่บรรจุภัณฑ์โดย James Bennett (จาก django) และการแก้ไขเพียงเล็กน้อยเพื่อ“ บนบรรจุภัณฑ์”โดย Ian Bicking (จาก mozilla)
หากคุณต้องการที่จะปลอดภัยลองการใช้งานของคุณโดยใช้ pip virtualenv สิ่งนี้ทำให้คุณมีสภาพแวดล้อมแบบงูหลามที่แยกจากกันดังนั้นคุณจึงมั่นใจได้ว่าแอปของคุณจะทำงานบนเครื่องใดก็ได้
เดี๋ยวก่อนนะฉันเชื่อว่าบางคนจะไม่เห็นด้วยกับฉัน