การติดตั้ง 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.