วิธีที่แนะนำในการติดตั้งแพ็กเกจหลามบน Arch


37

วิธีที่แนะนำในการติดตั้งแพ็กเกจหลามบน Arch คืออะไร? ค้นหาพวกเขาใน AUR และติดตั้งพวกเขาจากที่นั่น (หรือสร้างPKGBUILDไฟล์เพื่อสร้างแพ็คเกจด้วยตัวเอง) หรือใช้pip?

ฉันเริ่มต้นด้วยการติดตั้งสิ่งของจาก Pacman และ AUR และไม่ทราบว่าควรผสมกับpipแพ็คเกจหรือไม่

คำตอบ:


34

หากคุณไม่ต้องการแพ็กเกจหลามสำหรับผู้ใช้ทั้งหมดคุณสามารถติดตั้งได้ในบ้านของคุณดังนี้:

pip install --user packagename

การติดตั้งในบ้านของคุณจะไม่ขัดแย้งกับผู้จัดการบรรจุภัณฑ์

โดยค่าเริ่มต้นpip install --userจะติดตั้งในไดเรกทอรี "ไซต์ผู้ใช้" ของคุณ /home/lesmana/.local/lib/python3.6/site-packagesโดยปกติแล้วว่าเป็นสิ่งที่ต้องการ:

คำสั่งต่อไปนี้จะพิมพ์ที่ตั้ง "ไซต์ผู้ใช้" ของคุณ:

python -m site

ในการปรับแต่งตำแหน่งการติดตั้ง:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

สิ่งนี้จะติดตั้งทุกสิ่งภายใต้ $HOME/some/dir

วิ่ง:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

ดูคู่มือ pipสำหรับข้อมูลเพิ่มเติม


/optถ้าคุณไม่ต้องการแพคเกจหลามสำหรับผู้ใช้ทั้งหมดแล้วสถานที่ที่ดีที่สุดในการติดตั้งคือ เช่นนี้:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(บันทึกที่หายไป--user)

และเพื่อทำงานตามที่กล่าวไว้ข้างต้น:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

คำอธิบายพื้นหลัง: /optโดยทั่วไปจะได้รับการยอมรับจากการกระจาย gnu / linux เป็นไดเรกทอรีที่ผู้ใช้ท้องถิ่นหรือผู้ดูแลระบบสามารถติดตั้งสิ่งของของตัวเอง ในคำอื่น ๆ : /optผู้จัดการแพคเกจของการกระจายมักจะไม่ได้สัมผัส นี้จะมากหรือน้อยกว่ามาตรฐานในระบบแฟ้มลำดับชั้นมาตรฐาน

เพื่อความสะดวกสบายสำหรับผู้ใช้ที่คุณจะยังคงต้องการที่จะเขียนสคริปต์เสื้อคลุมและวางไว้ในหรือ/bin /usr/binสิ่งนี้ยังคงมีความเสี่ยงในการชนกับตัวจัดการแพ็คเกจการแจกจ่าย แต่อย่างน้อยมันก็เป็นไฟล์สคริปต์ตัวแรปเปอร์เพียงไฟล์เดียว ดังนั้นความเสียหายที่อาจเกิดขึ้นจึงมีน้อยมาก คุณสามารถตั้งชื่อสคริปต์ของ wrapper เช่นlocal-fooหรือcustom-fooเพื่อลดความเสี่ยงของการชนกับตัวจัดการแพ็คเกจการแจกจ่าย

หรือคุณสามารถปรับเปลี่ยนPATHเพื่อรวม/opt/binและวางสคริปต์ตัวตัดคำของคุณที่นั่น แต่สิ่งนี้ต้องการให้คุณแก้ไขไฟล์ระบบ (หรือบางส่วน) PATHอีกครั้งซึ่งมีการกำหนดซึ่งอาจถูกเขียนทับโดยตัวจัดการแพคเกจการกระจายอีกครั้ง

กล่าวโดยย่อ: หากคุณต้องการติดตั้งสำหรับผู้ใช้ทั้งหมดให้ทำเช่น/optนั้น ที่ที่คุณวางสคริปต์ตัวตัดเพื่อความสบายเป็นการเรียกวิจารณญาณ

ข้อมูลเพิ่มเติมเกี่ยวกับ/optและลำดับชั้นของมาตรฐานระบบไฟล์:


IMHO สิ่งนี้พร้อมกับตัวชี้เพื่อตั้งค่า virtualenv ควรเป็นคำตอบที่ยอมรับได้
ttsiodras

1
ฮึ. ใหม่กว่าpythonและหวังว่าฉันจะรู้เรื่องนี้ก่อนที่จะsudioทำเรื่องเล็ก ๆ น้อย ๆ ขอบคุณสำหรับสิ่งนี้.
Hendy

ถ้าคุณทำต้องแพคเกจหลามสำหรับผู้ใช้ทั้งหมดหรือไม่
Mehrdad

@Mehrdad คำตอบที่ปรับปรุงแล้ว
lesmana

@lesmana: ขอบคุณ! แต่คุณแน่ใจหรือไม่ว่าเป็นวิธีที่แนะนำให้ทำ นี่เป็นครั้งแรกที่ฉันได้ยินว่ามีคนแนะนำให้ใช้ / เลือกใช้ Python ...
เมห์ราดด้วย

9

โดยทั่วไปในการกระจายขอแนะนำให้คุณใช้ตัวจัดการแพคเกจการกระจาย แน่นอนคุณสามารถติดตั้งสิ่งต่าง ๆ โดยใช้ pip (หรือในโลก perl, cpan) หรือรวบรวมและติดตั้งสิ่งต่าง ๆ ด้วยตัวเอง อย่างไรก็ตามเมื่อคุณทำเช่นนี้ผู้จัดการแพคเกจการกระจายไม่ทราบเกี่ยวกับพวกเขาและไม่สามารถจัดการการพึ่งพาหรือการปรับปรุงสำหรับพวกเขา

การใช้ pip นั้นเทียบได้กับการรวบรวมและติดตั้งแพ็คเกจของคุณเอง ทำได้หากคุณต้องการ แต่ชอบผู้จัดการแพ็คเกจการจัดจำหน่าย


2
คุณควรหลีกเลี่ยงการใช้pip(อย่างน้อยก็ทั่วโลกผ่านsudoหรือเป็นรูท) - ฉันเพิ่งพบsite-package/...ข้อผิดพลาดบางอย่างอยู่แล้วเมื่อpacmanพยายามติดตั้งการอ้างอิงบางอย่าง
Tobias Kienzler

ฉันเพิ่งได้รับข้อผิดพลาดเช่นกัน ฉันได้อัพเกรดแพ็คเกจ pip3 ทั้งหมดแล้ว pacman ปฏิเสธที่จะทำการอัพเกรดระบบเนื่องจากความขัดแย้ง ฉันต้องถอนการติดตั้งแพคเกจนั้นผ่าน pip3 และ pacman จากนั้นทำการอัพเกรดระบบและในที่สุดก็ติดตั้งแพ็คเกจกลับ (โดยใช้ pacman แน่นอน)
อัลจี

8

วิธีที่เหมาะสมสำหรับ ArchLinux

วิธีที่เหมาะสมในการติดตั้งแพ็กเกจ PYTHON ใน ArchLinux คือการใช้ PACMAN! ในการติดตั้งแพ็คเกจไปที่ Python3 คุณต้องใช้

sudo pacman -S python-'package'

หากคุณต้องการติดตั้งแพ็คเกจจาก Python2 คุณต้องใช้

sudo pacman -S python2-'package'

แพคเกจหลามส่วนใหญ่อยู่ในที่เก็บ ArchLinux และแพ็คเกจที่ไม่ได้อยู่ใน AUR (ArchLinux User Repositories) - สำหรับแพ็คเกจเหล่านี้คุณต้องดาวน์โหลดไฟล์ PKGBUILD และรวบรวม หลังจากนั้นคุณต้องใช้ PACMAN เพื่อสิ้นสุดการติดตั้ง

makepkg -s
sudo pacman -U 'compiled-package'

วิธีที่สองที่เหมาะสมสำหรับ ArchLinux

เมื่อแพ็คเกจไม่ได้อยู่ใน AUR หรือ PKGBUILD ไม่ทำงานคุณสามารถใช้ PIP เพื่อติดตั้งไปยัง Python3

sudo pip install 'python-package'

หรือ Python2

sudo pip2 install 'python-package'

คุณสามารถให้โอกาสvirtualenvหรือแม้กระทั่งconda

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

sudo pacman -S python-virtualenv

และลองสิ่งนี้

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

เมื่อคุณสร้างสภาพแวดล้อมนี้yourenvคุณจะตั้งค่าpipให้ติดตั้งแพคเกจลงในสภาพแวดล้อมนี้เท่านั้นไม่ใช่กับระบบทั้งหมด

ลิงค์อื่น ๆ เหล่านี้มีประโยชน์เมื่อคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการจัดการแพ็คเกจบน Linux ด้วยcondaหรือvirtualenv:

การติดตั้ง Python Packages จาก Jupyter Notebook

รหัส Python บน ArchLinux

หากคุณปฏิบัติตามกฎเหล่านี้ ArchLinux ของคุณจะไม่แตกและจะไม่มีปัญหาการพึ่งพาระหว่าง PACMAN และ PIP

หวังว่ามันจะมีประโยชน์!


5

สำหรับแพ็คเกจบางชุด (แพ็คเกจที่ฉันอาจไม่ต้องการแฮ็ก) ฉันสร้างแพ็คเกจของตัวเองโดยใช้:

https://github.com/bluepeppers/pip2arch

จากนั้นสร้างและติดตั้ง PKGBUILD ที่ผลิต

ฉันออกจาก virtualenvs สำหรับแพ็คเกจฉันอาจต้องการแก้ไขหรือแฮ็ค


นอกจากนี้ยังมีgithub.com/wenLiangcan/pip2pkgbuild
Tobias Kienzler

1

นอกเหนือจากคำตอบอื่น ๆ ที่นี่โปรดดูpython-virtualenvแพ็คเกจ มันอาจจะมีประโยชน์มากถ้าคุณกำลังทำการพัฒนาในหลายโครงการที่มีการพึ่งพาที่แตกต่างกันกับหมายเลขเวอร์ชั่นที่ไม่ตรงกัน

https://wiki.archlinux.org/index.php/Python_VirtualEnv

นอกจากนี้ระวังว่ามี pip และ virtualenv ให้เลือกสองแบบ หนึ่งรายการสำหรับ Python 2 และอีกหนึ่งสำหรับ Python 3 หากการติดตั้งล้มเหลวด้วยข้อผิดพลาดทางไวยากรณ์คุณอาจลองรุ่นที่ผิด

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