Chúng ta có thể tạo môi trường ảo trong python không?

Ứ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ày

Ghi 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ình

Trê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ực

Cà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
6

Pipenv 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 defined
5

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 defined
7

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 defined
9

Bạn sẽ nhận được đầu ra tương tự như thế này

$ pip --version
0

Sử dụng

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
50 đả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 defined
51

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
3

Kiểm tra cài đặt của bạn

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
0

Sử dụng cơ bản

  1. 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 defined
1

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
52 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 defined
54] 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 defined
54

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 defined
56]

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
2

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 defined
57

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
3

  1. Để 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 defined
4

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 defined
58] để 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 defined
54, 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 defined
5

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 defined
6

  1. 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 defined
7

Đ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 defined
71. ]

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 defined
72 với tùy chọn
>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
73 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 defined
72 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 defined
8

Đ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 defined
75, 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 defined
76. 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 defined
9

Đ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
1

Trong Windows, đường dẫn mặc định cho WORKON_HOME là %USERPROFILE%\Envs

Sử dụng cơ bản

  1. Tạo môi trường ảo

$ pip --version
2

Thao tác này tạo thư mục

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
77 bên trong
>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
78

  1. Làm việc trên môi trường ảo

$ pip --version
3

Ngoà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 defined
79, được biên tập bởi
>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
90 khi bạn
>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
91

$ pip --version
4

virtualenvwrapper 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 defined
92 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

  1. Tắt máy vẫn vậy

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
7

  1. Xóa

$ pip --version
6

Các lệnh hữu ích khác

>>> python
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'python' is not defined
93Liệ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 defined
94Đ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 defined
96Giố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 defined
98Hiển thị nội dung của thư mục
$ pip --version
60

Danh 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 defined
90 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

Tôi có nên tạo môi trường ảo Python không?

Môi trường ảo nên được sử dụng bất cứ khi nào bạn làm việc trên bất kỳ dự án dựa trên Python nào . Nhìn chung, thật tốt khi có một môi trường ảo mới cho mọi dự án dựa trên Python mà bạn thực hiện. Vì vậy, các phụ thuộc của mọi dự án được cách ly khỏi hệ thống và với nhau.

Chúng tôi có thể cài đặt Python trong môi trường ảo không?

Vì cài đặt các gói khác là trường hợp sử dụng phổ biến nhất cho môi trường ảo Python, nên bạn sẽ muốn có quyền truy cập vào pip. Bạn có thể kiểm tra kỹ xem Python đã cài đặt cả pip và setuptools vào môi trường ảo của mình hay chưa bằng cách sử dụng danh sách pip. các cửa sổ. Linux + macOS

Chủ Đề