การติดตั้ง pip: โปรดตรวจสอบการอนุญาตและเจ้าของไดเรกทอรีนั้น


155

ในขณะที่ติดตั้ง pip และ python ฉันพบสิ่งที่กล่าวว่า

ไดเรกทอรี '/ Users / Parthenon / Library / Logs / pi' หรือไดเรกทอรีหลักไม่ได้เป็นของผู้ใช้ปัจจุบันและบันทึกการดีบักถูกปิดใช้งาน โปรดตรวจสอบการอนุญาตและเจ้าของไดเรกทอรีนั้น หากดำเนินการ pip ด้วย sudo คุณอาจต้องการแฟล็ก -H

sudoเพราะตอนนี้ผมมีการติดตั้งโดยใช้

ฉันมีงูใหญ่และห้องสมุดจำนวนหนึ่งติดตั้งไว้แล้วบน Mac ของฉันฉันใช้ Yosemite ฉันเพิ่งต้องทำการล้างข้อมูลใหม่ทั้งหมดจากนั้นติดตั้งระบบปฏิบัติการใหม่ ตอนนี้ฉันได้รับพรอมต์นี้และฉันมีปัญหาในการหาวิธีเปลี่ยน

ก่อนที่บรรทัดคำสั่งของฉันจะเป็นParthenon$ตอนนี้Philips-MBP:~ Parthenon$

ฉันเป็นเจ้าของคอมพิวเตอร์คนเดียวและนี่เป็นเพียงบัญชีเดียวเท่านั้น นี่ดูเหมือนจะเป็นปัญหาเมื่ออัพเกรดเป็น python 3.4 ไม่มีอะไรน่าจะอยู่ในตำแหน่งที่ถูกต้อง virtualenv ไม่ไปตามที่ฉันคาดไว้เป็นต้น


คุณชื่อบัญชีฟิลิป?
komaromy

ฉันเพิ่งสังเกตเห็นสิ่งนี้เกิดขึ้นเมื่อใช้ pip บนเครื่องของฉันเองเมื่อวานนี้คุณหมายถึงอะไร virtualenv ไม่ไปในที่ที่คุณคาดหวัง
Padraic Cunningham

ฉันติดตั้ง Python 3.4 บนเครื่องของฉันแล้ว แต่เมื่อฉันใช้งาน Python ใน terminal ของฉันมันยังคงรัน 2.7 แม้หลังจากผ่านกระบวนการติดตั้งทั้งหมด ฉันเพียงกล่าวถึง virtualenv เพราะโดยปกติฉันคาดหวังว่าจะพบมันใน Library / Python / 3.4 แต่ไม่มี Library / Python / 3.4
Phil Andrews

คุณจำเป็นต้องใช้บางอย่างเช่น python3 หรือ python3.4 เพื่อใช้ตัวแปล python3 รายการที่ถูกเปิดใหม่เป็นเพียงการตั้งค่าอูบุนตูมีตัวเลือกเดียวกัน
Padraic Cunningham

@PadraicCunningham คุณได้รับปัญหา pip เดียวกันหรือไม่ คุณเพิ่งอัพเกรดเป็นโยเซมิตีหรือไม่?
Phil Andrews

คำตอบ:


127

ฉันยังได้เห็นการเปลี่ยนแปลงนี้บน Mac ของฉันเมื่อฉันเดินออกมาจากที่ทำงานไปpip sudo pipการเพิ่ม-Hไปยัง sudo ทำให้ข้อความหายไปสำหรับฉัน เช่น

sudo -H pip install foo

man sudoบอกฉันว่า-Hทำให้sudoการตั้งค่า$HOMEเป็นผู้ใช้เป้าหมาย (รูทในกรณีนี้)

ดังนั้นจึงปรากฏ pip มองเข้าไปใน$HOME/Library/Logและsudoโดยเริ่มต้นไม่ได้ตั้งค่าการ$HOME /root/ไม่น่าแปลกใจที่คุณ~/Library/Logเป็นเจ้าของในฐานะผู้ใช้แทนที่จะเป็นรูท

ฉันสงสัยว่านี่เป็นการเปลี่ยนแปลงจุดเล็ก ๆ ในเร็ว ๆ นี้ ตอนนี้ฉันจะจัดการsudo -Hให้เสร็จ


18
โปรดทราบว่าการใช้sudo pipไม่ถูกต้องทั้งหมด สำหรับข้อมูลเพิ่มเติมโปรดดูที่นี่stackoverflow.com/questions/33004708/ …
Mikko Ohtamaa

ฉันมีปัญหาเดียวกัน แต่ใช่ตอนนี้ฉันต้องติดตั้งโดยใช้ธง "-H"
Malachi Bazar

62

sudoอะไรคือสิ่งที่ปัญหาที่นี่คือที่คุณติดตั้งอย่างใดเข้าไปใช้ virtualenv อาจเกิดจากอุบัติเหตุ ซึ่งหมายความว่าrootผู้ใช้จะเขียนข้อมูลแพ็คเกจ Python ใหม่ทำให้ไฟล์ทั้งหมดเป็นของ root และผู้ใช้ปกติของคุณไม่สามารถเขียนไฟล์เหล่านั้นได้อีก โดยปกติ virtualenv ควรใช้และเป็นเจ้าของโดยผู้ใช้ UNIX ปกติของคุณเท่านั้น

คุณสามารถแก้ไขปัญหาได้โดยการเปลี่ยนชุดการอนุญาตไฟล์ UNIX เป็นผู้ใช้ของคุณ ลอง:

$ sudo chown -R USERNAME /Users/USERNAME/Library/Logs/pip
$ sudo chown -R USERNAME /Users/USERNAME/Library/Caches/pip

จากนั้นpipควรจะสามารถเขียนไฟล์เหล่านั้นอีกครั้ง

ข้อมูลเพิ่มเติมเกี่ยวกับการจัดการสิทธิ์ของไฟล์ UNIX


Pip ยังคงเขียนด้วยข้อผิดพลาด ฉันยังมีคำเตือนที่คล้ายกันและสิทธิ์ของฉันถูกต้อง OP ไม่ได้ใช้ virtualenv จริง ๆ ดังนั้นจึงเหมาะสมที่จะติดตั้งแพ็คเกจทั่วโลกจะต้องใช้ sudo
Padraic Cunningham

1
@PadraicCunningham: หาก pip แสดงข้อผิดพลาดว่าการอนุญาตของคุณไม่ถูกต้องโปรดแสดงการอนุญาตไฟล์ของคุณเพื่อให้เราสามารถทราบได้ว่ามีอะไรผิดปกติ มิฉะนั้นการช่วยเหลือจะเป็นการถ่ายในที่มืด
Mikko Ohtamaa

นอกจากนี้ฉันขอแนะนำให้คุณเปิดคำถามอีกข้อหนึ่งเนื่องจากปัญหาของคุณอาจแตกต่างจากที่ผู้เขียนต้นฉบับมีอยู่
Mikko Ohtamaa

ใช้ชื่อผู้ใช้ของฉันเองฉันได้รับข้อผิดพลาด: อินพุต: sudo chown -R USERNAME / ผู้ใช้ / USERNAME / ไลบรารี / บันทึก / pip เอาต์พุต: chown: / ผู้ใช้ / USERNAME / ไลบรารี / บันทึก / pip: ไม่มีไฟล์หรือไดเรกทอรี
user2755660

61

pip install --user <package name> (ไม่จำเป็นต้องใช้ sudo)ทำงานให้ฉันสำหรับปัญหาที่คล้ายกันมาก


คุณต้องให้ข้อกำหนดอย่างน้อยหนึ่งข้อในการติดตั้ง (ดู "การติดตั้งวิธีใช้ pip")
Amir

0

ข้อมูลพื้นฐาน

  • ระบบ: mac os 18.0.0
  • ผู้ใช้ปัจจุบัน: yutou

กุญแจ

  1. เพิ่มบัญชีปัจจุบันไปยังกลุ่มล้อ
sudo dscl . -append /Groups/wheel wheel $(whoami)
  1. แก้ไขโหมดแพคเกจหลามเป็น 775
chmod -R 775 ${this_is_your_python_package_path}

สิ่งทั้งหมด

  • เมื่อ python3 คอมไพล์ได้ดีข้อมูลก็เป็นเหมือนคำถามที่กล่าวมา
  • ฉันพยายามใช้pip3 install requestsและได้รับ:
File "/usr/local/python3/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: 
'/usr/local/python3/lib/python3.6/site-packages/requests'
  • ดังนั้นฉันcd /usr/local/python3/lib/python3.6/site-packagesแล้วls -alและได้รับ:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

เมื่อฉันเห็นสิ่งนี้ฉันเข้าใจ makedirs เป็นการกระทำของการเขียน แต่โหมดคำขอdrwxrwxr-xdisplaied เฉพาะผู้ใช้รูทเท่านั้นที่สามารถเขียนไฟล์การร้องขอ ถ้าเพิ่ม yutou ( whoami) ลงในวงล้อกลุ่มและแก้ไขแพ็กเกจลงในวงล้อกลุ่มสามารถเขียนได้จากนั้นฉันสามารถเขียนและแก้ปัญหาได้

วิธีเพิ่ม yutou ใน wheel group + ตรวจจับล้อกลุ่มsudo dscl . -list /groups GroupMembership, คุณจะพบกับ:

wheel                    root

วงล้อกลุ่มหนึ่ง root สมาชิกเท่านั้น + เพิ่ม yutou ไปยังวงล้อ, sudo dscl . -append /Groups/wheel wheel yutou. + ตรวจสอบsudo dscl . -list /groups GroupMembership:

wheel                    root yutou

แก้ไขโหมดแพคเกจหลาม

chmod -R 775 /usr/local/python3/lib/python3.6

0

หากคุณเปลี่ยนแปลงตัวแปร $ PATH ที่อาจทำให้เกิดปัญหา หากคุณคิดว่าอาจเป็นปัญหาให้ตรวจสอบ ~ / .bash_profile หรือ ~ / .bashrc ของคุณ

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