Lỗi errno 13 quyền bị từ chối python venv

Xin chào,

Tôi đã cài đặt netbox mới trên centos 7 và khi tôi chạy các lệnh sau

nguồn/opt/netbox/venv/bin/kích hoạt
cài đặt pip3 django-auth-ldap

Tôi nhận được lỗi sau đây

LỖI. Không thể cài đặt các gói do OSError. [Errno 13] Quyền bị từ chối. '/opt/netbox-2. 11. 3/venv/lib/python3. 6/site-gói/pyasn1'
Kiểm tra các quyền

Có những câu chuyện mới trên trang chủ

Khi làm việc với các dự án Python của bạn, bạn nên sử dụng môi trường ảo. Về cơ bản, môi trường ảo giống như có một thư mục cho dự án của bạn, nơi bạn có thể chỉ định phiên bản Python nào và phần phụ thuộc nào [thư viện khác] mà bạn muốn sử dụng cho dự án cụ thể đó

Nếu bạn không sử dụng môi trường ảo thì bất cứ khi nào bạn cài đặt các phụ thuộc cho các dự án của mình, chúng sẽ được cài đặt vào thư mục chuẩn của hệ thống dành cho Python. Có tất cả các phụ thuộc cho tất cả các dự án của bạn được cài đặt trong cùng một thư mục không phải là cách tuyệt vời để quản lý mọi thứ

Ví dụ: giả sử bạn có Dự án Python A dựa trên phiên bản 1. 0. 0 của một thư viện cụ thể. Sau đó, bạn có Dự án B thứ hai dựa trên phiên bản 2. 0. 0 của thư viện đó. Vì vậy, bạn nâng cấp thư viện lên phiên bản 2. 0. 0 để Dự án B hoạt động và khi làm như vậy, bạn có nguy cơ phá vỡ Dự án A

Một ví dụ khác, giả sử bạn đang phát triển một dự án Python chỉ sử dụng một số phụ thuộc. Bạn muốn chia sẻ dự án của mình với người khác nên bạn tạo một yêu cầu. txt mà họ có thể sử dụng để dễ dàng cài đặt tất cả các phần phụ thuộc của dự án. Vì vậy, bạn sử dụng

$ pip install virtualenv
2 để tạo tệp này, nhưng giờ đây pip bao gồm tất cả các thư viện nằm trong thư mục chuẩn đó cho tất cả các dự án của bạn. Vì vậy, việc sử dụng môi trường ảo giúp tách biệt và sắp xếp các dự án của bạn

Một trong những công cụ phổ biến nhất để quản lý môi trường ảo cho Python là Virtualenv, công cụ này giúp bạn thiết lập môi trường Python biệt lập cho các dự án của mình.

Cài đặt Virtualenv

Để cài đặt Virtualenv, trước tiên bạn cần đảm bảo rằng bạn đã cài đặt pip. pip là công cụ được đề xuất của Python để cài đặt các gói Python và gần như chắc chắn bạn sẽ sử dụng nó để cài đặt bất kỳ gói nào cho các dự án của mình. Bạn có thể cài đặt pip bằng cách nhập thông tin sau vào thiết bị đầu cuối của mình

$ sudo easy_install pip

Khi bạn đã cài đặt pip, bạn có thể bảo nó cài đặt Virtualenv bằng lệnh sau

$ pip install virtualenv

Nếu bạn gặp bất kỳ lỗi nào khi cài đặt Virtualenv, bạn có thể tham khảo phần ở cuối bài viết này

Tạo một virtualenv

Bây giờ bạn đã cài đặt Virtualenv, bạn có thể sử dụng nó để tạo môi trường ảo cho các dự án của mình

Trăn 3

Để tạo môi trường ảo sử dụng Python 3, hãy mở thiết bị đầu cuối của bạn và điều hướng đến thư mục nơi bạn muốn tạo môi trường mới, sau đó nhập thông tin sau vào dòng lệnh của bạn

 $ virtualenv -p python3 myproject

Thay thế

$ pip install virtualenv
3 trong lệnh trên bằng bất kỳ tên nào bạn muốn đặt cho môi trường mới của mình. Điều này bây giờ sẽ tạo một thư mục thư mục trông như thế này

myproject
├── bin
├── include
├── lib
└── pip-selfcheck.json

Thư mục trên và tất cả nội dung của nó hiện là môi trường ảo mới sáng bóng của bạn. Thư mục

$ pip install virtualenv
4 là nơi chứa mã dự án của bạn. Đây có thể là một. py hoặc thư mục chứa dự án toàn diện hơn

Mọi thư viện phụ thuộc mà bạn cài đặt bằng pip sẽ được đặt trong

$ pip install virtualenv
5, điều này rất hữu ích nếu bạn biết trong trường hợp bạn cần kiểm tra mã nguồn của bất kỳ thư viện nào trong số chúng

Ghi chú. Trước khi cài đặt bất kỳ phần phụ thuộc nào với

$ pip install virtualenv
6, hãy đảm bảo rằng bạn đã kích hoạt môi trường ảo, nếu không, pip sẽ cài đặt thư viện vào thư mục Python tiêu chuẩn của máy bạn, do đó phủ nhận toàn bộ điểm có môi trường ảo ngay từ đầu

Trăn 2

Bạn nên thử và tránh sử dụng Python 2 kể từ bây giờ trừ khi thực sự cần thiết, vì Python 2 sẽ không còn được hỗ trợ tích cực từ ngày 1 tháng 1 năm 2020. Tuy nhiên, nếu bạn cần tạo một môi trường ảo sử dụng Python 2, bạn có thể sử dụng lệnh sau

$ virtualenv myproject

Kích hoạt một virtualenv

Bên trong thư mục

$ pip install virtualenv
4 của môi trường ảo của bạn là một shell script có tên là
$ pip install virtualenv
8, để kích hoạt môi trường ảo, bạn chỉ cần chạy nó. Lệnh đầu tiên bên dưới điều hướng vào thư mục bin, lệnh thứ hai chạy tập lệnh kích hoạt

$ cd myproject/bin
$ source activate

Bây giờ bạn sẽ thấy dấu nhắc thiết bị đầu cuối của mình thay đổi thành như thế này

[myproject] $

Môi trường ảo của bạn hiện đang hoạt động và bây giờ bạn có thể tiến hành cài đặt bất kỳ phụ thuộc dự án nào bằng cách sử dụng lệnh

$ pip install virtualenv
6

Vô hiệu hóa một virtualenv

Để hủy kích hoạt môi trường ảo, bạn chỉ cần nhập

 $ virtualenv -p python3 myproject
0 vào thiết bị đầu cuối của mình, từ bất kỳ thư mục nào, như thế này

[myproject] $ deactivate
$ 

Và đó là nó. Những điều trên sẽ giúp bạn giữ các dự án Python của mình ở trạng thái có tổ chức hơn. Nếu bạn có bất kỳ câu hỏi nào, vui lòng để lại trong phần bình luận

Xử lý sự cố

Dưới đây là một số gợi ý cho các lỗi có thể xảy ra mà bạn có thể gặp phải

$ pip install virtualenv
ERROR: Could not not install packages due to an EnvironmentError: 
[Errno 13]Permission denied: '/Library/Python/2.7/site-packages/virtualenv.pyc'
Consider using the --user option or check the permissions.

Lỗi trên có nghĩa là pip đã cố thêm virtualenv. pyc vào thư mục gói Python tiêu chuẩn của máy nhưng không có quyền thêm tệp mới vào thư mục đó. Để khắc phục điều này, bạn có thể thay đổi quyền của thư mục, sử dụng cờ --user để chỉ định người dùng có quyền hoặc cuối cùng thực hiện hành động với tư cách là người dùng root

Giải pháp 1. Thay đổi quyền thư mục
Trong lỗi trên, thư mục không cho phép ghi tệp vào là

 $ virtualenv -p python3 myproject
1 trong trường hợp này, chúng tôi có thể thay đổi quyền đối với tệp bằng cách sử dụng lệnh sau trong thiết bị đầu cuối của bạn

$ cd
$ chmod -R 777 /Library/Python/2.7/site-packages

Điều này sẽ làm cho thư mục đó và tất cả các thư mục trong đó có thể ghi được, nhờ cờ -R [đệ quy]. Sau đó, bạn sẽ có thể chạy lại lệnh

 $ virtualenv -p python3 myproject
2. Đây nên là hành động đầu tiên của bạn vì các giải pháp tiếp theo bắt đầu mở ra quyền cho các tập lệnh có quyền truy cập nhiều hơn vào hệ thống của bạn

Giải pháp 2. Sử dụng cờ --user
Tiếp theo, bạn có thể thử cài đặt tập lệnh với tư cách là người dùng của mình bằng lệnh sau

$ pip install virtualenv
0

Giải pháp 3. Sử dụng lệnh sudo
Điều này nên được sử dụng như là một phương sách cuối cùng. Về cơ bản, điều này sẽ chạy lệnh với tư cách là người dùng root, vì vậy nếu có bất kỳ khả năng cài đặt pip nào của bạn bị xâm phạm thì nó có thể chạy bất kỳ loại hành động độc hại nào khi bạn thực hiện lệnh này. Nó khó xảy ra nhưng không phải là không thể

$ pip install virtualenv
1

Điều này có thể yêu cầu bạn nhập mật khẩu của mình, sau đó nó sẽ cho phép quá trình cài đặt diễn ra thành công

Chủ Đề