ฉันจะติดตั้งแพ็คเกจ pip ทั่วโลกแทนที่จะติดตั้งภายในเครื่องได้อย่างไร


99

ฉันกำลังพยายามติดตั้งแพ็คเกจ flake8 โดยใช้ pip3 และดูเหมือนว่าจะปฏิเสธที่จะติดตั้งเนื่องจากติดตั้งในตำแหน่งที่ตั้งเดียวแล้ว

ฉันจะบังคับให้ติดตั้งทั่วโลก (ระดับระบบ) ได้อย่างไร

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

โปรดทราบว่าฉันต้องการโซลูชันทั่วไป (ซึ่งควรใช้กับ Debian, OS X หรือแม้แต่ Windows) ซึ่งควรใช้กับแพลตฟอร์มใดก็ได้ดังนั้นฉันจึงไม่ต้องการระบุปลายทางด้วยตัวเอง

ด้วยเหตุผลแปลก ๆ มันทำงานเหมือนที่ฉันระบุไว้แล้ว--userซึ่งในกรณีของฉันฉันไม่ได้ทำ

วิธีเดียวที่ฉันสามารถติดตั้งแพ็กเกจได้ทั่วโลกคือการลบออกก่อนแล้วติดตั้งอีกครั้ง ดูเหมือนว่า pip (8.1.1) จะปฏิเสธที่จะติดตั้งแพ็คเกจทั่วโลกหากมีอยู่ในเครื่อง

ข้อจำกัดความรับผิดชอบ: ไม่มีการใช้สภาพแวดล้อมเสมือนหรือได้รับอันตรายในระหว่างการทดลอง


3
คุณเคยลองจากผู้ใช้รูทหรือ sudo หรือไม่?
matino

คุณลองpip install flake8 --upgradeหรือยัง?
Mauro Baraldi

ในกรณีของปัญหาที่คล้ายกันที่เกี่ยวข้องกับการใช้งานสภาพแวดล้อมเสมือน (venv) ให้ใช้--system-site-packagesตัวเลือกเพื่อสืบทอดแพ็คเกจที่ติดตั้งทั่วโลกลงใน venv ของคุณ ดูstackoverflow.com/a/61326709/4445175
Wlad

คำตอบ:


138

ทำไมคุณไม่ลองsudoกับHธง? นี้ควรทำเคล็ดลับ

sudo -H pip install flake8

ปกติsudo pip install flake8จะพยายามใช้โฮมไดเร็กทอรีของคุณเอง -Hแนะให้ใช้ไดเรกทอรีบ้านของระบบ ข้อมูลเพิ่มเติมที่https://stackoverflow.com/a/43623102/


98
Hเช่นเดียวกับใน Hlobal?
Matt

63
-Hเช่นเดียวกับเฮ้ sudo หยุดใช้โฮมไดเร็กทอรีของฉัน ใช้Hไดเรกทอรี ome ของคุณเองแทน stackoverflow.com/a/43623102
nikhilweee

6
สิ่งนี้ไม่ได้ติดตั้งจริงทั่วโลก แต่ดูเหมือนว่าจะเก็บไว้ในโฮมไดเร็กทอรีของผู้ใช้ 'root' แทน
parsecpython

@nikhilweee ฉันไม่เข้าใจว่ามันแตกต่างจากpip3 install ipythonตอนที่ปิดใช้งานVirtualenv อย่างไรพวกเขาดูเหมือนจะติดตั้งลงในsite-packagesไดเร็กทอรีเดียวกัน
iamfrancisyo

@parsecpython สำหรับฉันมันไม่หลอกลวงและติดตั้งแพคเกจเข้า /usr/local/lib/python3.8/dist-packages ที่ผมหมายถึงพวกเขาไป
yota


5

คุณกำลังใช้virtualenv? ถ้าใช่ให้ปิดใช้งาน Virtualenv หากคุณไม่ได้ใช้งานแสดงว่ามีการติดตั้งกันอย่างแพร่หลายแล้ว (ระดับระบบ) ลองอัพเกรดแพ็คเกจ

pip install flake8 --upgrade

2
ไม่เป็นความจริง
GMaster

2

ฉันไม่เห็นปัญหาของคุณ ทั่วโลกคือแพ็คเกจใด ๆ ที่อยู่ในโฟลเดอร์แพ็กเกจไซต์ของเส้นทาง python3 ของคุณ

หากคุณต้องการใช้ภายในเครื่องคุณต้องกำหนดค่า Virtualenv และติดตั้งแพ็คเกจใหม่ด้วยสภาพแวดล้อมเสมือนที่เปิดใช้งาน


เมื่อสร้าง venv คุณสามารถใช้--system-site-packages .venv/devเพื่อสืบทอดแพ็กเกจส่วนกลางดังนั้นคุณไม่จำเป็นต้องติดตั้งใหม่ในแต่ละ venv สิ่งนี้เหมาะสมสำหรับแพ็คเกจที่เราอาจต้องการใช้ในโครงการใด ๆ เช่น black, flake8, pytest ตัวอย่าง:python -m venv --system-site-packages .venv/dev
Wlad

-1

การติดตั้ง pip เกิดขึ้นที่ไหนใน python

ฉันจะให้โซลูชัน windows ที่ฉันเผชิญอยู่และใช้เวลาสักครู่ในการแก้ปัญหา

ก่อนอื่นใน windows (ฉันจะใช้Windowsเป็น OS ที่นี่) หากคุณทำเช่นpip install <package_name>นั้นระบบจะติดตั้งเป็นค่าเริ่มต้นทั่วโลก ( หากคุณไม่ได้เปิดใช้งานสภาพแวดล้อมเสมือนจริง ) เมื่อคุณเปิดใช้งานสภาพแวดล้อมเสมือนจริงและคุณอยู่ภายในนั้นการติดตั้ง pip ทั้งหมดจะอยู่ภายในสภาพแวดล้อมเสมือนจริงนั้น


pip กำลังติดตั้งแพ็คเกจดังกล่าวแต่ไม่สามารถใช้งานได้?

สำหรับ pip นี้อาจแจ้งเตือนคุณว่า pip ที่เรียกใช้pip3.exeงานpip.exeไม่ได้อยู่ในตัวแปรพา ธ ของคุณ สำหรับนี้คุณอาจจะเพิ่มเส้นทางนี้ (ปกติ - C:\Users\<your_username>\AppData\Roaming\Programs\Python\) ที่คุณตัวแปรสิ่งแวดล้อม หลังจากรีสตาร์ทของคุณcmdแล้วลองใช้แพ็คเกจ python ที่ติดตั้งไว้ ตอนนี้ควรใช้งานได้แล้ว

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