cài đặt pip: Vui lòng kiểm tra quyền và chủ sở hữu của thư mục đó


155

Trong khi cài đặt pip và python, tôi đã gặp phải một thông báo:

Thư mục '/ Users / Parthenon / Library / Logs / pi' hoặc thư mục mẹ của nó không thuộc sở hữu của người dùng hiện tại và nhật ký gỡ lỗi đã bị vô hiệu hóa. Vui lòng kiểm tra các quyền và chủ sở hữu của thư mục đó. Nếu thực thi pip với sudo, bạn có thể muốn cờ -H.

bởi vì bây giờ tôi phải cài đặt bằng cách sử dụng sudo.

Tôi đã có python và một số thư viện đã được cài đặt trên máy Mac của tôi, tôi đang chạy Yosemite. Gần đây tôi đã phải xóa sạch và sau đó cài đặt lại hệ điều hành. Bây giờ tôi nhận được lời nhắc này và tôi gặp khó khăn khi tìm cách thay đổi nó

Trước khi dòng lệnh của tôi là Parthenon$bây giờPhilips-MBP:~ Parthenon$

Tôi là chủ sở hữu duy nhất của máy tính này và đây là tài khoản duy nhất trên đó. Đây dường như là một vấn đề khi nâng cấp lên python 3.4, dường như không có gì ở đúng nơi, virtualenv không đi đến nơi tôi mong đợi, v.v.


Là tài khoản của bạn Philip?
komaromy

Tôi chỉ nhận thấy điều này xảy ra khi sử dụng pip trên máy của chính tôi ngày hôm qua, ý bạn là gì bởi virtualenv sẽ không đi đến nơi bạn mong đợi?
Padraic Cickyham

Tôi đã cài đặt Python 3.4 trên máy của mình, nhưng khi tôi chạy python trong thiết bị đầu cuối thì nó vẫn chạy 2.7 ngay cả khi đã trải qua toàn bộ quá trình cài đặt. Tôi chỉ đề cập đến virtualenv vì tôi thường mong đợi tìm thấy nó trong Thư viện / Python / 3.4 nhưng không có Thư viện / Python / 3.4
Phil Andrew

bạn cần sử dụng một cái gì đó như python3 hoặc python3.4 để sử dụng trình thông dịch python3, các mục được mở lại chỉ là một cài đặt, ubfox có cùng tùy chọn.
Padraic Cickyham

@PadraicCickyham bạn có gặp vấn đề tương tự không? Gần đây bạn đã nâng cấp lên Yosemite?
Phil Andrew

Câu trả lời:


127

Tôi cũng đã thấy sự thay đổi này trên máy Mac của mình khi tôi chuyển từ chạy pipsang sudo pip. Thêm -Hvào sudo khiến tin nhắn biến mất cho tôi. Ví dụ

sudo -H pip install foo

man sudocho tôi biết -Hnguyên nhân sudođể đặt thành $HOMEngười dùng đích (root trong trường hợp này).

Vì vậy, nó xuất hiện pip đang xem xét $HOME/Library/Logsudotheo mặc định không được thiết lập $HOMEđể /root/. Không có gì đáng ngạc nhiên khi ~/Library/Logbạn là người dùng chứ không phải root.

Tôi nghi ngờ đây là một số thay đổi gần đây trong pip. Bây giờ tôi sẽ chạy nó sudo -Hđể làm việc.


18
Xin lưu ý rằng việc sử dụng sudo piplà hoàn toàn không chính xác. Để biết thêm thông tin, vui lòng tham khảo tại đây stackoverflow.com/questions/33004708/ trên
Mikko Ohtamaa

Tôi đã có cùng một vấn đề, nhưng vâng bây giờ tôi phải cài đặt bằng cờ "-H".
Malachi Bazar

62

Vấn đề ở đây là bằng cách nào đó bạn đã cài đặt vào virtualenv bằng cách sử dụng sudo. Có lẽ là tình cờ. Điều này có nghĩa là rootngười dùng sẽ viết lại dữ liệu gói Python, làm cho tất cả các tệp thuộc sở hữu gốc và người dùng bình thường của bạn không thể ghi các tệp đó nữa. Thông thường virtualenv chỉ nên được sử dụng và sở hữu bởi người dùng UNIX bình thường của bạn.

Bạn có thể khắc phục sự cố bằng cách thay đổi gói quyền tệp UNIX cho người dùng của mình. Thử:

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

sau đó pipsẽ có thể viết các tập tin đó một lần nữa.

Thông tin thêm về quản lý cấp phép tệp UNIX


Pip vẫn viết với lỗi. Tôi cũng có một cảnh báo tương tự và các quyền của tôi là chính xác, OP thực sự không sử dụng virtualenv nên sẽ có nghĩa là việc cài đặt các gói trên toàn cầu sẽ yêu cầu sudo.
Padraic Cickyham

1
@PadraicCastyham: Nếu pip đưa ra lỗi rằng các quyền của bạn không chính xác, vui lòng hiển thị quyền truy cập tệp của bạn, để chúng tôi có thể tìm ra điều gì sai với chúng. Nếu không giúp đỡ sẽ là một shot trong bóng tối.
Mikko Ohtamaa

Ngoài ra tôi đề nghị bạn mở một câu hỏi khác vì vấn đề của bạn có thể khác với những gì tác giả ban đầu có
Mikko Ohtamaa

Sử dụng tên người dùng của riêng tôi, tôi đã nhận được một lỗi: Input: sudo chown -R USERNAME / Users / USERNAME / Library / Logs / pip Kết quả: chown: / Users / USERNAME / Library / Logs / pip: Không có tệp hoặc thư mục như vậy
user2755660

61

pip install --user <package name> (không cần sudo) làm việc cho tôi cho một vấn đề rất giống nhau.


Bạn phải đưa ra ít nhất một yêu cầu để cài đặt (xem "cài đặt trợ giúp pip")
Amir

0

thông tin cơ bản

  • hệ thống: mac os 18.0.0
  • người dùng hiện tại: yutou

chìa khóa

  1. thêm tài khoản hiện tại vào nhóm bánh xe
sudo dscl . -append /Groups/wheel wheel $(whoami)
  1. sửa đổi chế độ gói python thành 775.
chmod -R 775 ${this_is_your_python_package_path}

toàn bộ

  • Khi python3 biên dịch tốt, thông tin giống như câu hỏi đã nói.
  • Tôi cố gắng sử dụng pip3 install requestsvà nhận được:
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'
  • vì vậy tôi cd /usr/local/python3/lib/python3.6/site-packages, sau đó ls -alvà có:
drwxr-xr-x    6 root   wheel   192B  2 27 18:06 requests/

Khi tôi nhìn thấy điều này, tôi đã hiểu, makenirs là một hành động ghi, nhưng chế độ yêu cầu drwxrwxr-xchỉ người dùng gốc mới có thể viết tệp yêu cầu. Nếu thêm yutou ( whoami) vào bánh xe nhóm và sửa đổi gói thành bánh xe nhóm có thể viết, thì tôi có thể viết và vấn đề đã được giải quyết.

Làm thế nào để thêm yutou vào bánh xe nhóm? + phát hiện bánh xe nhóm sudo dscl . -list /groups GroupMembership, bạn sẽ tìm thấy:

wheel                    root

bánh xe nhóm chỉ có một thành viên gốc. + thêm yutou vào bánh xe nhóm , sudo dscl . -append /Groups/wheel wheel yutou. + kiểm tra , sudo dscl . -list /groups GroupMembership:

wheel                    root yutou

sửa đổi chế độ gói python

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

0

Nếu bạn thay đổi biến $ PATH cũng có thể gây ra sự cố. Nếu bạn nghĩ rằng đó có thể là vấn đề, hãy kiểm tra ~ / .bash_profile hoặc ~ / .bashrc của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.