Ứng dụng Python thường sẽ sử dụng các gói và mô-đun bổ sung không có trong thư viện chuẩn. Đôi khi các ứng dụng có thể yêu cầu phiên bản cụ thể của thư viện để thực hiện một tác vụ cụ thể hoặc sửa lỗi
Tầm quan trọng của việc tạo môi trường ảo
Giả sử chúng ta đang phát triển hai ứng dụng yêu cầu phiên bản thư viện cũ hơn và các ứng dụng khác yêu cầu phiên bản thư viện mới trong cùng một bản cài đặt Python. Đôi khi, nó dẫn đến một vấn đề
Nói cách khác, một bản cài đặt Python có thể không đáp ứng được yêu cầu của mọi ứng dụng. Yêu cầu của các ứng dụng khác nhau có thể tạo ra xung đột với nhau. Ví dụ: - Nếu ứng dụng A yêu cầu phiên bản 1. 0 và một ứng dụng khác yêu cầu phiên bản 2. 0, vì vậy chúng sẽ tạo ra xung đột và kết quả là một ứng dụng không thể chạy
Để giải quyết yêu cầu xung đột này, Python đề xuất tạo môi trường ảo. Ứng dụng A có môi trường của nó với phiên bản 1. 0. Ứng dụng B có môi trường với phiên bản 2. 0, vì vậy nếu chúng tôi muốn nâng cấp ứng dụng B với phiên bản 3. 0, điều này sẽ không ảnh hưởng đến môi trường của ứng dụng A
Tạo môi trường ảo
Mô-đun venv được sử dụng để tạo và quản lý môi trường ảo. Nó có sẵn với phiên bản Python mới nhất. Chúng ta có thể quyết định vị trí để tạo môi trường ảo và chạy mô-đun venv dưới dạng tập lệnh với đường dẫn thư mục. Nhập lệnh sau vào dòng lệnh của bạn và nhấn nút enter
Lệnh trên sẽ tạo thư mục new-env;
Ghi chú. Chúng ta có thể viết đơn giản là python thay vì python3, vì nó chỉ được sử dụng nếu chúng ta đã cài đặt nhiều phiên bản Python khác nhau
Tất cả các môi trường ảo được lưu trữ trong vị trí thư mục chung thư mục venv. Khi chúng tôi tạo môi trường ảo, chúng tôi phải kích hoạt nó bằng cách gõ lệnh sau
Trên Window, Nhấn enter sau khi gõ
Trên UNIX hoặc MacOs, hãy chạy
Sau khi kích hoạt môi trường ảo, nó sẽ thay đổi dấu nhắc shell để cho biết chúng ta đang sử dụng môi trường ảo nào
Quản lý các gói bằng cách sử dụng pip
Chúng tôi có thể cài đặt, nâng cấp và xóa các thư viện trong môi trường ảo được kích hoạt bằng trình quản lý gói Python có tên là pip. Ví dụ -
Nó sẽ chỉ cho bạn cách cài đặt và sử dụng các công cụ cần thiết, đồng thời đưa ra các đề xuất mạnh mẽ về các phương pháp hay nhất. Hãy nhớ rằng Python được sử dụng cho rất nhiều mục đích khác nhau và chính xác cách bạn muốn quản lý các phụ thuộc của mình có thể thay đổi dựa trên cách bạn quyết định xuất bản phần mềm của mình. Hướng dẫn được trình bày ở đây được áp dụng trực tiếp nhất cho việc phát triển và triển khai các dịch vụ mạng [bao gồm cả ứng dụng web], nhưng cũng rất phù hợp để quản lý môi trường phát triển và thử nghiệm cho bất kỳ loại dự án nào
Ghi chú
Hướng dẫn này được viết cho Python 3, tuy nhiên, các hướng dẫn này sẽ hoạt động tốt trên Python 2. 7—nếu bạn vẫn đang sử dụng nó, vì lý do nào đó
Đảm bảo bạn có Python & pip
Trước khi tiếp tục, hãy đảm bảo rằng bạn có Python và nó có sẵn từ dòng lệnh của bạn. Bạn có thể kiểm tra điều này bằng cách chạy
$ python --version
Bạn sẽ nhận được một số đầu ra như
$ pip --version
8. Nếu bạn chưa có Python, vui lòng cài đặt 3 phiên bản mới nhất. phiên bản x từ python. org hoặc tham khảo phần Cài đặt Python của hướng dẫn nàyGhi chú
Nếu bạn là người mới và bạn gặp lỗi như thế này
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined
Đó là bởi vì lệnh này được thiết kế để chạy trong trình bao [còn được gọi là thiết bị đầu cuối hoặc bảng điều khiển]. Xem Python dành cho người mới bắt đầu để biết phần giới thiệu về cách sử dụng trình bao của hệ điều hành của bạn và tương tác với Python
Ngoài ra, bạn sẽ cần đảm bảo rằng bạn có sẵn pip. Bạn có thể kiểm tra điều này bằng cách chạy
$ pip --version
Nếu bạn đã cài đặt Python từ nguồn, với trình cài đặt từ python. org hoặc qua Homebrew, bạn đã có pip. Nếu bạn đang dùng Linux và được cài đặt bằng trình quản lý gói hệ điều hành, bạn có thể phải cài đặt riêng pip
Cài đặt Pipenv
Pipenv là trình quản lý phụ thuộc cho các dự án Python. Nếu bạn đã quen thuộc với Node. js’ npm hoặc gói của Ruby, về mặt tinh thần thì nó cũng tương tự như các công cụ đó. Mặc dù pip có thể cài đặt các gói Python, nhưng Pipenv được khuyến nghị vì đây là công cụ cấp cao hơn giúp đơn giản hóa việc quản lý phụ thuộc cho các trường hợp sử dụng phổ biến
Sử dụng
$ pip --version
9 để cài đặt Pipenv$ pip install --user pipenv
Ghi chú
Điều này ngăn chặn việc phá vỡ bất kỳ gói nào trên toàn hệ thống. Nếu
$ pip install --user pipenv
0 không có sẵn trong trình bao của bạn sau khi cài đặt, bạn sẽ cần thêm thư mục nhị phân của ’ vào $ pip install --user pipenv
1 của mìnhTrên Linux và macOS, bạn có thể tìm thấy thư mục nhị phân cơ sở người dùng bằng cách chạy
$ pip install --user pipenv
2 và thêm $ pip install --user pipenv
3 vào cuối. Ví dụ: điều này thường sẽ in $ pip install --user pipenv
4 [với $ pip install --user pipenv
5 được mở rộng thành đường dẫn tuyệt đối đến thư mục chính của bạn], vì vậy bạn sẽ cần thêm $ pip install --user pipenv
6 vào $ pip install --user pipenv
1 của mình. Bạn có thể đặt vĩnh viễn $ pip install --user pipenv
1 của mình bằng cách sửa đổi ~/. Hồ sơTrên Windows, bạn có thể tìm thấy thư mục nhị phân cơ sở người dùng bằng cách chạy
$ pip install --user pipenv
9 và thay thế $ pip --version
60 bằng $ pip --version
61. Ví dụ: điều này có thể trả về $ pip --version
62, vì vậy bạn cần đặt $ pip install --user pipenv
1 của mình để bao gồm $ pip --version
64. Bạn có thể đặt vĩnh viễn người dùng của mình $ pip install --user pipenv
1 trong Bảng điều khiển. Bạn có thể cần đăng xuất để những thay đổi của $ pip install --user pipenv
1 có hiệu lựcCài đặt các gói cho dự án của bạn
Pipenv quản lý các phụ thuộc trên cơ sở từng dự án. Để cài đặt các gói, hãy thay đổi thư mục dự án của bạn [hoặc chỉ một thư mục trống cho hướng dẫn này] và chạy
$ pip --version
6Pipenv sẽ cài đặt thư viện Yêu cầu xuất sắc và tạo một
$ pip --version
67 cho bạn trong thư mục dự án của bạn. Pipfile được sử dụng để theo dõi những phụ thuộc mà dự án của bạn cần trong trường hợp bạn cần cài đặt lại chúng, chẳng hạn như khi bạn chia sẻ dự án của mình với người khác. Bạn sẽ nhận được kết quả tương tự như thế này [mặc dù các đường dẫn chính xác được hiển thị sẽ khác nhau]>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined5
Sử dụng các gói đã cài đặt
Bây giờ Yêu cầu đã được cài đặt, bạn có thể tạo một tệp
$ pip --version
68 đơn giản để sử dụng nó>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined7
Sau đó, bạn có thể chạy tập lệnh này bằng cách sử dụng
$ pip --version
69>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined9
Bạn sẽ nhận được đầu ra tương tự như thế này
$ pip --version
0Sử dụng
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined50 đảm bảo rằng các gói đã cài đặt của bạn có sẵn cho tập lệnh của bạn. Cũng có thể tạo một trình bao mới để đảm bảo tất cả các lệnh có quyền truy cập vào các gói đã cài đặt của bạn với
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined51
Bước tiếp theo
Xin chúc mừng, bây giờ bạn đã biết cách cài đặt và sử dụng các gói Python. ✨ 🍰 ✨
Mức độ thấp hơn. ảoenv
virtualenv là một công cụ để tạo môi trường Python bị cô lập. virtualenv tạo một thư mục chứa tất cả các tệp thực thi cần thiết để sử dụng các gói mà dự án Python sẽ cần
Nó có thể được sử dụng độc lập, thay cho Pipenv
Cài đặt virtualenv qua pip
$ pip --version
3Kiểm tra cài đặt của bạn
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined0
Sử dụng cơ bản
- Tạo môi trường ảo cho dự án
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined1
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined52 sẽ tạo một thư mục trong thư mục hiện tại chứa các tệp thực thi Python và một bản sao của thư viện
$ pip --version
9 mà bạn có thể sử dụng để cài đặt các gói khác. Tên của môi trường ảo [trong trường hợp này là >>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined54] có thể là bất kỳ thứ gì;
Ghi chú
'venv' là quy ước chung được sử dụng trên toàn cầu. Vì nó có sẵn trong các tệp bỏ qua [ví dụ:. . gitignore']
Thao tác này tạo một bản sao của Python trong bất kỳ thư mục nào bạn đã chạy lệnh, đặt nó vào một thư mục có tên
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined54
Bạn cũng có thể sử dụng trình thông dịch Python mà bạn chọn [chẳng hạn như
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined56]
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined2
hoặc thay đổi trình thông dịch trên toàn cầu bằng một biến env trong
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined57
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined3
- Để bắt đầu sử dụng môi trường ảo, nó cần được kích hoạt
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined4
Tên của môi trường ảo hiện tại sẽ xuất hiện ở bên trái của lời nhắc [e. g.
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined58] để cho bạn biết rằng nó đang hoạt động. Từ giờ trở đi, bất kỳ gói nào bạn cài đặt bằng pip sẽ được đặt trong thư mục
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined54, tách biệt với cài đặt Python toàn cầu
Đối với Windows, lệnh tương tự được đề cập trong bước 1 có thể được sử dụng để tạo môi trường ảo. Tuy nhiên, kích hoạt môi trường yêu cầu một lệnh hơi khác
Giả sử rằng bạn đang ở trong thư mục dự án của bạn
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined5
Cài đặt các gói bằng lệnh
$ pip --version
9>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined6
- Nếu bạn đang làm việc trong môi trường ảo vào lúc này, bạn có thể tắt nó
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined7
Điều này đưa bạn trở lại trình thông dịch Python mặc định của hệ thống với tất cả các thư viện đã cài đặt của nó
Để xóa một môi trường ảo, chỉ cần xóa thư mục của nó. [Trong trường hợp này, nó sẽ là
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined71. ]
Tuy nhiên, sau một thời gian, bạn có thể thấy rất nhiều môi trường ảo nằm rải rác trên hệ thống của mình và có thể bạn sẽ quên tên hoặc vị trí của chúng.
Ghi chú
Python đã bao gồm mô-đun venv từ phiên bản 3. 3. Để biết thêm chi tiết. venv
Ghi chú khác
Chạy
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined72 với tùy chọn
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined73 sẽ không bao gồm các gói được cài đặt trên toàn cầu. Điều này có thể hữu ích để giữ cho danh sách gói sạch sẽ trong trường hợp nó cần được truy cập sau này. [Đây là hành vi mặc định cho
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined72 1. 7 trở lên. ]
Để giữ cho môi trường của bạn nhất quán, bạn nên "đóng băng" trạng thái hiện tại của các gói môi trường. Để làm điều này, hãy chạy
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined8
Điều này sẽ tạo một tệp
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined75, chứa một danh sách đơn giản về tất cả các gói trong môi trường hiện tại và các phiên bản tương ứng của chúng. Bạn có thể xem danh sách các gói đã cài đặt mà không có định dạng yêu cầu bằng cách sử dụng
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined76. Sau đó, một nhà phát triển khác [hoặc bạn, nếu bạn cần tạo lại môi trường] sẽ dễ dàng hơn để cài đặt các gói giống nhau bằng các phiên bản giống nhau
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined9
Điều này có thể giúp đảm bảo tính nhất quán trong quá trình cài đặt, triển khai và giữa các nhà phát triển
Cuối cùng, hãy nhớ loại trừ thư mục môi trường ảo khỏi kiểm soát nguồn bằng cách thêm nó vào danh sách bỏ qua [xem phần ]
virtualenvwrapper
virtualenvwrapper cung cấp một tập hợp các lệnh giúp làm việc với môi trường ảo dễ chịu hơn nhiều. Nó cũng đặt tất cả các môi trường ảo của bạn vào một nơi
Để cài đặt [đảm bảo rằng virtualenv đã được cài đặt]
$ pip --version
0[Hướng dẫn cài đặt virtualenvwrapper đầy đủ. ]
Đối với Windows, bạn có thể sử dụng virtualenvwrapper-win
Để cài đặt [đảm bảo rằng virtualenv đã được cài đặt]
$ pip --version
1Trong Windows, đường dẫn mặc định cho WORKON_HOME là %USERPROFILE%\Envs
Sử dụng cơ bản
- Tạo môi trường ảo
$ pip --version
2Thao tác này tạo thư mục
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined77 bên trong
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined78
- Làm việc trên môi trường ảo
$ pip --version
3Ngoài ra, bạn có thể tạo một dự án, dự án này tạo ra môi trường ảo và cũng là một thư mục dự án bên trong
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined79, được biên tập bởi
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined90 khi bạn
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined91
$ pip --version
4virtualenvwrapper cung cấp hoàn thành tab trên tên môi trường. Nó thực sự hữu ích khi bạn có nhiều môi trường và khó nhớ tên của chúng
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined92 cũng hủy kích hoạt bất kỳ môi trường nào bạn đang ở, vì vậy bạn có thể nhanh chóng chuyển đổi giữa các môi trường
- Tắt máy vẫn vậy
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined7
- Xóa
$ pip --version
6Các lệnh hữu ích khác
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined93Liệt kê tất cả các môi trường.
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined94Điều hướng vào thư mục của môi trường ảo hiện đang được kích hoạt, để bạn có thể duyệt qua
$ pip --version
60 của nó chẳng hạn. >>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined96Giống như trên, nhưng trực tiếp vào thư mục
$ pip --version
60. >>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined98Hiển thị nội dung của thư mục
$ pip --version
60Danh sách đầy đủ các lệnh virtualenvwrapper
virtualenv-burrito
Với virtualenv-burrito, bạn có thể có một môi trường virtualenv + virtualenvwrapper hoạt động trong một lệnh duy nhất
direnv
Khi bạn
>>> python Traceback [most recent call last]: File "", line 1, in NameError: name 'python' is not defined90 vào một thư mục chứa một
$ pip --version
01, direnv sẽ tự động kích hoạt môi trường