วิธีที่ง่ายที่สุดในการติดตั้งแพ็กเกจหลามแบบโลคัลคืออะไร?


32

ฉันไม่ต้องการที่จะจัดการกับvirtualenvสำหรับการติดตั้ง Python ในท้องถิ่นฉันแค่ต้องการติดตั้งแพคเกจบางอย่างในพื้นที่โดยไม่ต้องจัดการกับPYTHONPATHตัวแปรสภาพแวดล้อมฉันจะทำอย่างไร


คุณพูดว่า "จัดการกับ" ราวกับว่า virtualenv เป็นเรื่องยุ่งยาก ฉันได้พบสิ่งที่ตรงกันข้ามกับความจริง (บางทีคุณต้องการ--system-site-packages?)
Andreas Klöckner

มันถูกวางสมมุติฐาน :) virtualenv น่ากลัว แต่ไม่เหมาะกับทุกกรณีการใช้งาน
Aron Ahmadia

คำตอบ:


48

Python (ตั้งแต่2.6 และ 3.0 ) ในขณะนี้ค้นหาในไดเรกทอรี ~ / .local สำหรับการติดตั้งในระบบซึ่งไม่ต้องการสิทธิ์ผู้ดูแลระบบในการติดตั้งดังนั้นคุณเพียงแค่ชี้ผู้ติดตั้งไปยังไดเรกทอรีนั้น

หากคุณดาวน์โหลดแพคเกจfooแล้วและต้องการติดตั้งด้วยตนเองให้พิมพ์:

cd path/to/foo
python setup.py install --user

หากคุณใช้ easy_install และต้องการแพ็คเกจที่ดาวน์โหลดและติดตั้ง:

easy_install --prefix=$HOME/.local/ foo

อัพเดทโดย RafiK

pip install --user foo

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

pip install --install-option="--prefix=$HOME/.local" foo

3
อัปเดต: pip ตอนนี้สนับสนุนการตั้งค่าสถานะ --user: pip install --user SomePackage (ลิงก์ไปยังคู่มือ)การใช้สิ่งนี้ทุกอย่างจะออกนอกกรอบแม้ในระบบปฏิบัติการที่แตกต่างกัน
RafiK

5

แม้ว่าฉันจะชอบภาษาไพ ธ อนการกระจายแพคเกจของ Python นั้นไม่เป็นระเบียบ ฉันมักจะพบว่าคนที่ไม่คุ้นเคยกับงูหลามที่ดิ้นรนกับมัน

ถัดจากการติดตั้งในท้องถิ่นของผู้ใช้ตามที่ระบุไว้โดย Aron (โดยใช้ --user หรือ --prefix) ตัวเลือกอื่นคือ EasyBuild ( http://hpcugent.github.com/easybuild/ ) ไม่เพียง แต่สำหรับแพ็คเกจ Python เท่านั้น แต่สำหรับแพ็คเกจซอฟต์แวร์ (วิทยาศาสตร์) ใด ๆ เมื่อ EasyBuild ได้รับการสนับสนุนการสร้างและติดตั้งแพคเกจซอฟต์แวร์นั้นเป็นคำสั่งเดียว

สำหรับรายชื่อของแพคเกจซอฟต์แวร์ที่สนับสนุนในขณะนี้ดูhttps://github.com/hpcugent/easybuild/wiki/List-of-supported-software-packages

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้พัฒนา EasyBuild


2

@Aron: ตรวจสอบให้แน่ใจว่าได้เพิ่มเส้นทางแพคเกจไซต์ท้องถิ่นลงในตัวแปรสภาพแวดล้อม $ PYTHONPATH


มันจะรวมอยู่ในเส้นทางของเว็บไซต์โดยอัตโนมัติตั้งแต่ Python 2.6 และ Python 3.0 :)
Aron Ahmadia

@AronAhmadia ไม่ได้ถ้าคุณใช้--prefixตัวเลือก
Jens Timmerman

@JensTimmerman - พา ธ ของไซต์เป็นที่ที่ Python ค้นหาเมื่อเริ่มต้นโมดูลเพื่อนำเข้าทุกครั้งที่คุณใช้งาน Python ตัวเลือกคำนำหน้าระบุตำแหน่งที่จะติดตั้งแพ็คเกจที่กำหนดเมื่อคุณติดตั้งแพ็กเกจ Python สองแนวคิดแยกกันอย่างสมบูรณ์
Aron Ahmadia

@AronAhmadia ใช่ประเด็นของฉันคือเมื่อคุณใช้ easy_install --prefix = / tmp คุณต้องเพิ่ม "/tmp/lib/pythonx.x/site-packages" ลงในตัวแปร PYTHONPATH ของคุณมิเช่นนั้นจะไม่ได้รับมาจาก python
Jens Timmerman

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