Hướng dẫn how do i find my python environment? - làm thế nào để tôi tìm thấy môi trường python của tôi?

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Làm việc với môi trường ảo Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Working With Python Virtual Environments

Show

Trong hướng dẫn này, bạn sẽ học cách làm việc với mô -đun Python từ

PS> venv\Scripts\activate
(venv) PS>
12 để tạo và quản lý các môi trường ảo riêng biệt cho các dự án Python của bạn. Mỗi môi trường có thể sử dụng các phiên bản khác nhau của phụ thuộc gói và python. Sau khi bạn đã học cách làm việc với các môi trường ảo, bạn sẽ biết cách giúp các lập trình viên khác tái tạo thiết lập phát triển của bạn và bạn sẽ đảm bảo rằng các dự án của bạn không bao giờ gây ra xung đột phụ thuộc cho nhau.

Đến cuối hướng dẫn này, bạn sẽ biết cách:

  • Tạo và kích hoạt môi trường ảo Python and activate a Python virtual environment
  • Giải thích lý do tại sao bạn muốn cô lập các phụ thuộc bên ngoàiwhy you want to isolate external dependencies
  • Hình dung những gì Python làm khi bạn tạo ra một môi trường ảo when you create a virtual environment
  • Tùy chỉnh môi trường ảo của bạn bằng cách sử dụng các đối số tùy chọn cho
    PS> venv\Scripts\activate
    (venv) PS>
    
    12
    your virtual environments using optional arguments to
    PS> venv\Scripts\activate
    (venv) PS>
    
    12
  • Vô hiệu hóa và loại bỏ môi trường ảo and remove virtual environments
  • Chọn các công cụ bổ sung để quản lý các phiên bản Python và môi trường ảo của bạnadditional tools for managing your Python versions and virtual environments

Môi trường ảo là một kỹ thuật phổ biến và hiệu quả được sử dụng trong phát triển Python. Nhận được sự hiểu biết tốt hơn về cách họ làm việc, tại sao bạn cần chúng và những gì bạn có thể làm với họ sẽ giúp bạn làm chủ quy trình lập trình Python của bạn.

Trong suốt hướng dẫn, bạn có thể chọn các ví dụ mã cho Windows, Ubuntu Linux hoặc MacOS. Chọn nền tảng của bạn ở phía trên bên phải của các khối mã có liên quan để có được các lệnh mà bạn cần và vui lòng chuyển đổi giữa các tùy chọn của bạn nếu bạn muốn tìm hiểu cách làm việc với các môi trường ảo Python trên các hệ điều hành khác.

Làm thế nào bạn có thể làm việc với một môi trường ảo Python?

Nếu bạn chỉ cần có được một môi trường ảo Python và chạy để tiếp tục làm việc trong dự án yêu thích của bạn, thì phần này là nơi phù hợp cho bạn.

Các hướng dẫn trong hướng dẫn này sử dụng mô -đun Python từ

PS> venv\Scripts\activate
(venv) PS>
12 để tạo môi trường ảo. Mô -đun này là một phần của thư viện tiêu chuẩn Python, và nó là cách chính thức được đề xuất để tạo môi trường ảo kể từ Python 3.5.

Để sử dụng cơ bản,

PS> venv\Scripts\activate
(venv) PS>
12 là một lựa chọn tuyệt vời vì nó đã được đóng gói với cài đặt Python của bạn. Với ý nghĩ đó, bạn đã sẵn sàng tạo ra môi trường ảo đầu tiên của mình trong hướng dẫn này.

Tạo ra nó

Bất cứ khi nào bạn làm việc trên một dự án Python sử dụng các phụ thuộc bên ngoài mà bạn đang cài đặt với

PS> venv\Scripts\activate
(venv) PS>
16, tốt nhất là bạn nên tạo một môi trường ảo:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

Nếu bạn sử dụng Python trên Windows và bạn đã định cấu hình các biến

PS> venv\Scripts\activate
(venv) PS>
17 và
PS> venv\Scripts\activate
(venv) PS>
18, thì bạn có thể cần cung cấp đường dẫn đầy đủ cho thực thi Python của bạn:

PS> C:\Users\Name\AppData\Local\Programs\Python\Python310\python -m venv venv

Đường dẫn hệ thống hiển thị ở trên giả định rằng bạn đã cài đặt Python 3.10 bằng trình cài đặt Windows được cung cấp bởi trang tải xuống Python. Đường dẫn đến Python thực thi trên hệ thống của bạn có thể khác nhau. Làm việc với PowerShell, bạn có thể tìm thấy đường dẫn bằng lệnh

PS> venv\Scripts\activate
(venv) PS>
19.

Nhiều hệ điều hành Linux vận chuyển với phiên bản Python 3. Nếu

PS> venv\Scripts\activate
(venv) PS>
20 không hoạt động, thì trước tiên bạn sẽ phải cài đặt Python và bạn có thể cần sử dụng tên cụ thể của phiên bản thực thi mà bạn đã cài đặt, ví dụ
PS> venv\Scripts\activate
(venv) PS>
21 cho Python 3.10.x. Nếu đó là trường hợp của bạn, hãy nhớ thay thế các đề cập của
PS> venv\Scripts\activate
(venv) PS>
20 trong các khối mã bằng số phiên bản cụ thể của bạn.

Các phiên bản MacO cũ hơn đi kèm với việc cài đặt hệ thống Python 2.7.x mà bạn không bao giờ nên sử dụng để chạy các tập lệnh của mình. Nếu bạn làm việc trên MacOS <12.3 và gọi trình thông dịch Python với

PS> venv\Scripts\activate
(venv) PS>
23 thay vì
PS> venv\Scripts\activate
(venv) PS>
20, thì bạn có thể vô tình khởi động trình thông dịch Python hệ thống lỗi thời.

Nếu chạy

PS> venv\Scripts\activate
(venv) PS>
20 không hoạt động, thì trước tiên bạn sẽ phải cài đặt một phiên bản hiện đại của Python.

Kích hoạt nó

Tuyệt quá! Bây giờ dự án của bạn có môi trường ảo riêng. Nói chung, trước khi bạn bắt đầu sử dụng nó, trước tiên bạn sẽ kích hoạt môi trường bằng cách thực thi một tập lệnh đi kèm với cài đặt:activate the environment by executing a script that comes with the installation:

  • các cửa sổ
  • Linux

PS> venv\Scripts\activate
(venv) PS>

$ source venv/bin/activate
(venv) $

hệ điều hành Mac

Nếu bạn sử dụng Python trên Windows và bạn đã định cấu hình các biến

PS> venv\Scripts\activate
(venv) PS>
17 và
PS> venv\Scripts\activate
(venv) PS>
18, thì bạn có thể cần cung cấp đường dẫn đầy đủ cho thực thi Python của bạn:

Đường dẫn hệ thống hiển thị ở trên giả định rằng bạn đã cài đặt Python 3.10 bằng trình cài đặt Windows được cung cấp bởi trang tải xuống Python. Đường dẫn đến Python thực thi trên hệ thống của bạn có thể khác nhau. Làm việc với PowerShell, bạn có thể tìm thấy đường dẫn bằng lệnh PS> venv\Scripts\activate (venv) PS> 19.

Nhiều hệ điều hành Linux vận chuyển với phiên bản Python 3. Nếu

PS> venv\Scripts\activate
(venv) PS>
20 không hoạt động, thì trước tiên bạn sẽ phải cài đặt Python và bạn có thể cần sử dụng tên cụ thể của phiên bản thực thi mà bạn đã cài đặt, ví dụ
PS> venv\Scripts\activate
(venv) PS>
21 cho Python 3.10.x. Nếu đó là trường hợp của bạn, hãy nhớ thay thế các đề cập của
PS> venv\Scripts\activate
(venv) PS>
20 trong các khối mã bằng số phiên bản cụ thể của bạn.

  • các cửa sổ
  • Linux

(venv) PS> python -m pip install <package-name>

(venv) $ python -m pip install 

Lệnh này là lệnh mặc định mà bạn nên sử dụng để cài đặt các gói Python bên ngoài với

PS> venv\Scripts\activate
(venv) PS>
16. Vì lần đầu tiên bạn tạo và kích hoạt môi trường ảo,
PS> venv\Scripts\activate
(venv) PS>
16 sẽ cài đặt các gói ở một vị trí bị cô lập.

Xin chúc mừng, bây giờ bạn có thể cài đặt các gói của mình vào môi trường ảo của mình. Để đi đến điểm này, bạn đã bắt đầu bằng cách tạo ra một môi trường ảo Python có tên

PS> venv\Scripts\activate
(venv) PS>
12 và sau đó kích hoạt nó trong phiên shell hiện tại của bạn.

Miễn là bạn không đóng thiết bị đầu cuối của mình, mọi gói Python mà bạn sẽ cài đặt sẽ kết thúc trong môi trường bị cô lập này thay vì các gói trang web Python toàn cầu của bạn. Điều đó có nghĩa là bây giờ bạn có thể làm việc trong dự án Python của mình mà không phải lo lắng về xung đột phụ thuộc.

Vô hiệu hóa nó

Khi bạn đã hoàn thành công việc với môi trường ảo này, bạn có thể hủy kích hoạt nó:

  • các cửa sổ
  • Linux + MacOS

(venv) PS> deactivate
PS>

Sau khi thực thi lệnh

PS> venv\Scripts\activate
(venv) PS>
30, dấu nhắc lệnh của bạn trở lại bình thường. Thay đổi này có nghĩa là bạn đã rời khỏi môi trường ảo của mình. Nếu bạn tương tác với Python hoặc
PS> venv\Scripts\activate
(venv) PS>
16 bây giờ, bạn sẽ tương tác với môi trường Python được cấu hình toàn cầu của bạn.

Nếu bạn muốn quay lại một môi trường ảo mà bạn đã tạo trước đó, bạn lại cần chạy tập lệnh kích hoạt của môi trường ảo đó.

Tại thời điểm này, bạn đã bao gồm các yếu tố cần thiết để làm việc với các môi trường ảo Python. Nếu đó là tất cả những gì bạn cần, thì những con đường vui vẻ khi bạn tiếp tục tạo!

Tuy nhiên, nếu bạn muốn biết chính xác những gì vừa xảy ra, tại sao rất nhiều hướng dẫn yêu cầu bạn tạo ra một môi trường ảo ngay từ đầu, và môi trường ảo Python thực sự là gì, sau đó tiếp tục đọc! Bạn sắp đi sâu!

Tại sao bạn cần môi trường ảo?

Gần như tất cả mọi người trong cộng đồng Python đề nghị bạn sử dụng môi trường ảo cho tất cả các dự án của mình. Nhưng tại sao? Nếu bạn muốn tìm hiểu lý do tại sao bạn cần thiết lập môi trường ảo Python ngay từ đầu, thì đây là phần phù hợp với bạn.

Câu trả lời ngắn gọn là Python không phải là người tuyệt vời trong quản lý phụ thuộc. Nếu bạn không cụ thể, thì

PS> venv\Scripts\activate
(venv) PS>
16 sẽ đặt tất cả các gói bên ngoài mà bạn cài đặt trong một thư mục gọi là
PS> venv\Scripts\activate
(venv) PS>
33 trong cài đặt Python cơ sở của bạn.

Về mặt kỹ thuật, Python đi kèm với hai thư mục gói trang web:

  1. PS> venv\Scripts\activate
    (venv) PS>
    
    34 chỉ nên chứa các mô -đun được viết bằng mã Python thuần túy.
    should contain only modules written in pure Python code.
  2. PS> venv\Scripts\activate
    (venv) PS>
    
    35 nên chứa các nhị phân được viết bằng Python thuần túy, ví dụ
    PS> venv\Scripts\activate
    (venv) PS>
    
    36,
    PS> venv\Scripts\activate
    (venv) PS>
    
    37 hoặc
    PS> venv\Scripts\activate
    (venv) PS>
    
    38.
    should contain binaries that aren’t written in pure Python, for example
    PS> venv\Scripts\activate
    (venv) PS>
    
    36,
    PS> venv\Scripts\activate
    (venv) PS>
    
    37, or
    PS> venv\Scripts\activate
    (venv) PS>
    
    38 files.

Bạn có thể tìm thấy các thư mục này ở các vị trí khác nhau nếu bạn làm việc trên các bản phân phối Fedora hoặc Redhat Linux.

Tuy nhiên, hầu hết các hệ điều hành thực hiện cài đặt gói trang web Python, để cả hai vị trí đều chỉ vào cùng một đường dẫn, tạo hiệu quả một thư mục gói trang web duy nhất.

Bạn có thể kiểm tra các đường dẫn bằng

PS> venv\Scripts\activate
(venv) PS>
39:

  • các cửa sổ
  • Linux + MacOS
  • Sau khi thực thi lệnh
    PS> venv\Scripts\activate
    (venv) PS>
    
    30, dấu nhắc lệnh của bạn trở lại bình thường. Thay đổi này có nghĩa là bạn đã rời khỏi môi trường ảo của mình. Nếu bạn tương tác với Python hoặc
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 bây giờ, bạn sẽ tương tác với môi trường Python được cấu hình toàn cầu của bạn.

Nếu bạn muốn quay lại một môi trường ảo mà bạn đã tạo trước đó, bạn lại cần chạy tập lệnh kích hoạt của môi trường ảo đó.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'

Nếu bạn muốn quay lại một môi trường ảo mà bạn đã tạo trước đó, bạn lại cần chạy tập lệnh kích hoạt của môi trường ảo đó.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'

Nếu bạn muốn quay lại một môi trường ảo mà bạn đã tạo trước đó, bạn lại cần chạy tập lệnh kích hoạt của môi trường ảo đó.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'

Tại thời điểm này, bạn đã bao gồm các yếu tố cần thiết để làm việc với các môi trường ảo Python. Nếu đó là tất cả những gì bạn cần, thì những con đường vui vẻ khi bạn tiếp tục tạo!

Tuy nhiên, nếu bạn muốn biết chính xác những gì vừa xảy ra, tại sao rất nhiều hướng dẫn yêu cầu bạn tạo ra một môi trường ảo ngay từ đầu, và môi trường ảo Python thực sự là gì, sau đó tiếp tục đọc! Bạn sắp đi sâu!

Tại sao bạn cần môi trường ảo?

Gần như tất cả mọi người trong cộng đồng Python đề nghị bạn sử dụng môi trường ảo cho tất cả các dự án của mình. Nhưng tại sao? Nếu bạn muốn tìm hiểu lý do tại sao bạn cần thiết lập môi trường ảo Python ngay từ đầu, thì đây là phần phù hợp với bạn.

Câu trả lời ngắn gọn là Python không phải là người tuyệt vời trong quản lý phụ thuộc. Nếu bạn không cụ thể, thì PS> venv\Scripts\activate (venv) PS> 16 sẽ đặt tất cả các gói bên ngoài mà bạn cài đặt trong một thư mục gọi là PS> venv\Scripts\activate (venv) PS> 33 trong cài đặt Python cơ sở của bạn.

Về mặt kỹ thuật, Python đi kèm với hai thư mục gói trang web:

PS> venv\Scripts\activate
(venv) PS>
34 chỉ nên chứa các mô -đun được viết bằng mã Python thuần túy.

PS> venv\Scripts\activate
(venv) PS>
35 nên chứa các nhị phân được viết bằng Python thuần túy, ví dụ
PS> venv\Scripts\activate
(venv) PS>
36,
PS> venv\Scripts\activate
(venv) PS>
37 hoặc
PS> venv\Scripts\activate
(venv) PS>
38.

Bạn có thể tìm thấy các thư mục này ở các vị trí khác nhau nếu bạn làm việc trên các bản phân phối Fedora hoặc Redhat Linux.

Tuy nhiên, hầu hết các hệ điều hành thực hiện cài đặt gói trang web Python, để cả hai vị trí đều chỉ vào cùng một đường dẫn, tạo hiệu quả một thư mục gói trang web duy nhất.

Để hiểu rõ hơn tại sao điều này rất quan trọng, hãy tưởng tượng bạn xây dựng các trang web Django cho hai khách hàng khác nhau. Một khách hàng thoải mái với ứng dụng web hiện tại của họ, ban đầu bạn đã xây dựng bằng Django 2.2.26 và khách hàng đó từ chối cập nhật dự án của họ lên phiên bản Django hiện đại. Một khách hàng khác muốn bạn đưa chức năng Async vào trang web của họ, chỉ có sẵn bắt đầu từ Django 4.0.

Nếu bạn đã cài đặt Django trên toàn cầu, bạn chỉ có thể có một trong hai phiên bản được cài đặt:

  • các cửa sổ
  • Linux + MacOS

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1

PS> venv\Scripts\activate
(venv) PS>
0

Nếu bạn cài đặt hai phiên bản khác nhau của cùng một gói vào môi trường Python toàn cầu của bạn, thì bản cài đặt thứ hai sẽ ghi đè lên phiên bản đầu tiên. Vì lý do tương tự, có một môi trường ảo duy nhất cho cả hai khách hàng cũng giành được công việc. Bạn có thể có hai phiên bản khác nhau của cùng một gói trong một môi trường Python duy nhất.

Có vẻ như bạn đã thắng được có thể làm việc trên một trong hai dự án với thiết lập này! Tuy nhiên, nếu bạn tạo một môi trường ảo cho mỗi dự án của khách hàng, thì bạn có thể cài đặt một phiên bản Django khác nhau vào mỗi dự án:

  • các cửa sổ
  • Linux + MacOS

PS> venv\Scripts\activate
(venv) PS>
1

PS> venv\Scripts\activate
(venv) PS>
2

Nếu bạn cài đặt hai phiên bản khác nhau của cùng một gói vào môi trường Python toàn cầu của bạn, thì bản cài đặt thứ hai sẽ ghi đè lên phiên bản đầu tiên. Vì lý do tương tự, có một môi trường ảo duy nhất cho cả hai khách hàng cũng giành được công việc. Bạn có thể có hai phiên bản khác nhau của cùng một gói trong một môi trường Python duy nhất.

Có vẻ như bạn đã thắng được có thể làm việc trên một trong hai dự án với thiết lập này! Tuy nhiên, nếu bạn tạo một môi trường ảo cho mỗi dự án của khách hàng, thì bạn có thể cài đặt một phiên bản Django khác nhau vào mỗi dự án:

Nếu bây giờ bạn kích hoạt một trong hai môi trường ảo, thì bạn sẽ nhận thấy rằng nó vẫn giữ phiên bản Django cụ thể của riêng mình. Hai môi trường cũng có các phụ thuộc khác nhau và mỗi môi trường chỉ chứa các phụ thuộc cần thiết cho phiên bản Django đó.

Với thiết lập này, bạn có thể kích hoạt một môi trường khi bạn làm việc trên một dự án và một dự án khác khi bạn làm việc trên một dự án khác. Bây giờ bạn có thể giữ cho bất kỳ số lượng khách hàng nào hạnh phúc cùng một lúc!

Giảm thiểu các vấn đề khả năng tái sản xuất

Nếu tất cả các gói của bạn sống ở một địa điểm, thì nó sẽ khó chỉ có các phụ thuộc có liên quan đến một dự án.

  1. Nếu bạn đã làm việc với Python trong một thời gian, thì môi trường Python toàn cầu của bạn có thể đã bao gồm tất cả các loại gói của bên thứ ba. Nếu đó không phải là trường hợp, thì hãy vỗ nhẹ vào lưng! Bạn có thể đã cài đặt một phiên bản Python mới gần đây hoặc bạn đã biết cách xử lý các môi trường ảo để tránh ô nhiễm hệ thống.
  2. Để làm rõ những vấn đề khả năng tái tạo mà bạn có thể gặp phải khi chia sẻ môi trường Python qua nhiều dự án, bạn sẽ xem xét một tình huống ví dụ tiếp theo. Hãy tưởng tượng bạn đã làm việc trong hai dự án độc lập trong tháng qua:

Một dự án cào web với súp đẹp

  • các cửa sổ
  • Linux + MacOS

PS> venv\Scripts\activate
(venv) PS>
3

PS> venv\Scripts\activate
(venv) PS>
4

Nếu bạn cài đặt hai phiên bản khác nhau của cùng một gói vào môi trường Python toàn cầu của bạn, thì bản cài đặt thứ hai sẽ ghi đè lên phiên bản đầu tiên. Vì lý do tương tự, có một môi trường ảo duy nhất cho cả hai khách hàng cũng giành được công việc. Bạn có thể có hai phiên bản khác nhau của cùng một gói trong một môi trường Python duy nhất.

  • các cửa sổ
  • Linux + MacOS

PS> venv\Scripts\activate
(venv) PS>
5

PS> venv\Scripts\activate
(venv) PS>
6

Nếu bạn cài đặt hai phiên bản khác nhau của cùng một gói vào môi trường Python toàn cầu của bạn, thì bản cài đặt thứ hai sẽ ghi đè lên phiên bản đầu tiên. Vì lý do tương tự, có một môi trường ảo duy nhất cho cả hai khách hàng cũng giành được công việc. Bạn có thể có hai phiên bản khác nhau của cùng một gói trong một môi trường Python duy nhất.

Có vẻ như bạn đã thắng được có thể làm việc trên một trong hai dự án với thiết lập này! Tuy nhiên, nếu bạn tạo một môi trường ảo cho mỗi dự án của khách hàng, thì bạn có thể cài đặt một phiên bản Django khác nhau vào mỗi dự án:

Nếu bây giờ bạn kích hoạt một trong hai môi trường ảo, thì bạn sẽ nhận thấy rằng nó vẫn giữ phiên bản Django cụ thể của riêng mình. Hai môi trường cũng có các phụ thuộc khác nhau và mỗi môi trường chỉ chứa các phụ thuộc cần thiết cho phiên bản Django đó.

Với thiết lập này, bạn có thể kích hoạt một môi trường khi bạn làm việc trên một dự án và một dự án khác khi bạn làm việc trên một dự án khác. Bây giờ bạn có thể giữ cho bất kỳ số lượng khách hàng nào hạnh phúc cùng một lúc!

Giảm thiểu các vấn đề khả năng tái sản xuất

Nếu tất cả các gói của bạn sống ở một địa điểm, thì nó sẽ khó chỉ có các phụ thuộc có liên quan đến một dự án.

Nếu bạn đã làm việc với Python trong một thời gian, thì môi trường Python toàn cầu của bạn có thể đã bao gồm tất cả các loại gói của bên thứ ba. Nếu đó không phải là trường hợp, thì hãy vỗ nhẹ vào lưng! Bạn có thể đã cài đặt một phiên bản Python mới gần đây hoặc bạn đã biết cách xử lý các môi trường ảo để tránh ô nhiễm hệ thống.

Để làm rõ những vấn đề khả năng tái tạo mà bạn có thể gặp phải khi chia sẻ môi trường Python qua nhiều dự án, bạn sẽ xem xét một tình huống ví dụ tiếp theo. Hãy tưởng tượng bạn đã làm việc trong hai dự án độc lập trong tháng qua:

Một dự án cào web với súp đẹp

Một ứng dụng bình

Một cấu trúc thư mục

Khi bạn tạo một môi trường ảo mới bằng mô-đun

PS> venv\Scripts\activate
(venv) PS>
12, Python sẽ tạo cấu trúc thư mục khép kín và các bản sao hoặc liên kết các tệp thực thi Python vào cấu trúc thư mục đó.

Bạn không cần phải đào sâu vào cấu trúc thư mục này để tìm hiểu thêm về những môi trường ảo được tạo ra. Chỉ trong một chút, bạn sẽ cẩn thận cạo lớp đất mặt và điều tra các cấu trúc cấp cao mà bạn phát hiện ra.

Tuy nhiên, nếu bạn đã sẵn sàng xẻng và bạn đang ngứa để đào, thì hãy mở phần có thể thu gọn bên dưới:

Chào mừng, dũng cảm một. Bạn đã chấp nhận thử thách để mạo hiểm sâu hơn vào cấu trúc thư mục môi trường ảo của bạn! Trong phần có thể thu gọn này, bạn sẽ tìm thấy các hướng dẫn về cách nhìn vào vực thẳm đen tối đó.

Trên dòng lệnh của bạn, điều hướng đến thư mục chứa môi trường ảo của bạn. Hít một hơi thật sâu và tự chuẩn bị, sau đó thực hiện lệnh

PS> venv\Scripts\activate
(venv) PS>
46 để hiển thị tất cả các nội dung của thư mục:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

Trước tiên bạn có thể cần cài đặt

PS> venv\Scripts\activate
(venv) PS>
46, ví dụ với
PS> venv\Scripts\activate
(venv) PS>
48.

Lệnh

PS> venv\Scripts\activate
(venv) PS>
46 hiển thị nội dung của thư mục
PS> venv\Scripts\activate
(venv) PS>
12 của bạn trong một cấu trúc cây rất dài.

Tuy nhiên, cuối cùng bạn hiển thị tất cả các nội dung của thư mục

PS> venv\Scripts\activate
(venv) PS>
51, bạn có thể ngạc nhiên là những gì bạn tìm thấy. Nhiều nhà phát triển trải qua một cú sốc nhỏ khi lần đầu tiên nhìn trộm. Có rất nhiều tập tin trong đó!

Nếu đây là lần đầu tiên của bạn và bạn cảm thấy như vậy, thì hãy chào đón nhóm người đã nhìn và bị choáng ngợp.

Một thư mục môi trường ảo chứa rất nhiều tệp và thư mục, nhưng bạn có thể nhận thấy rằng hầu hết những gì làm cho cấu trúc cây này còn lại trong thư mục

PS> venv\Scripts\activate
(venv) PS>
33. Nếu bạn cắt giảm các thư mục con và các tệp trong đó, bạn sẽ kết thúc với một cấu trúc cây quá áp đảo:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

PS> venv\Scripts\activate
(venv) PS>
7

PS> venv\Scripts\activate
(venv) PS>
8

PS> venv\Scripts\activate
(venv) PS>
9

Trước tiên bạn có thể cần cài đặt

PS> venv\Scripts\activate
(venv) PS>
46, ví dụ với
PS> venv\Scripts\activate
(venv) PS>
48.

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

  • Trước tiên bạn có thể cần cài đặt

    PS> venv\Scripts\activate
    (venv) PS>
    
    46, ví dụ với
    PS> venv\Scripts\activate
    (venv) PS>
    
    48.
    is an initially empty folder that Python uses to include C header files for packages you might install that depend on C extensions.

  • Lệnh

    PS> venv\Scripts\activate
    (venv) PS>
    
    46 hiển thị nội dung của thư mục
    PS> venv\Scripts\activate
    (venv) PS>
    
    12 của bạn trong một cấu trúc cây rất dài.
    contains the
    PS> venv\Scripts\activate
    (venv) PS>
    
    55 folder, which is one of the main reasons for creating your virtual environment. This folder is where you’ll install external packages that you want to use within your virtual environment. By default, your virtual environment comes preinstalled with two dependencies,
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 and setuptools. You’ll learn more about them in a bit.

  • Tuy nhiên, cuối cùng bạn hiển thị tất cả các nội dung của thư mục

    PS> venv\Scripts\activate
    (venv) PS>
    
    51, bạn có thể ngạc nhiên là những gì bạn tìm thấy. Nhiều nhà phát triển trải qua một cú sốc nhỏ khi lần đầu tiên nhìn trộm. Có rất nhiều tập tin trong đó! contains the executable files of your virtual environment. Most notable are the Python interpreter (
    PS> venv\Scripts\activate
    (venv) PS>
    
    58), the
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 executable (
    PS> venv\Scripts\activate
    (venv) PS>
    
    60), and the activation script for your virtual environment, which comes in a couple of different flavors to allow you to work with different shells. In this tutorial, you’ve used
    PS> venv\Scripts\activate
    (venv) PS>
    
    61, which handles the activation of your virtual environment for Windows across most shells.

  • Nếu đây là lần đầu tiên của bạn và bạn cảm thấy như vậy, thì hãy chào đón nhóm người đã nhìn và bị choáng ngợp. is a crucial file for your virtual environment. It contains only a couple of key-value pairs that Python uses to set variables in the

    PS> venv\Scripts\activate
    (venv) PS>
    
    63 module that determine which Python interpreter and which site-packages directory the current Python session will use. You’ll learn more about the settings in this file when you read about how a virtual environment works.

  • Một thư mục môi trường ảo chứa rất nhiều tệp và thư mục, nhưng bạn có thể nhận thấy rằng hầu hết những gì làm cho cấu trúc cây này còn lại trong thư mục

    PS> venv\Scripts\activate
    (venv) PS>
    
    33. Nếu bạn cắt giảm các thư mục con và các tệp trong đó, bạn sẽ kết thúc với một cấu trúc cây quá áp đảo: contains the executable files of your virtual environment. Most notable are the Python interpreter (
    PS> venv\Scripts\activate
    (venv) PS>
    
    23) and the
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 executable (
    PS> venv\Scripts\activate
    (venv) PS>
    
    16), as well as their respective symlinks (
    PS> venv\Scripts\activate
    (venv) PS>
    
    20,
    PS> venv\Scripts\activate
    (venv) PS>
    
    21,
    PS> venv\Scripts\activate
    (venv) PS>
    
    70,
    PS> venv\Scripts\activate
    (venv) PS>
    
    71). The folder also contains activation scripts for your virtual environment. Your specific activation script depends on what shell you use. For example, in this tutorial, you ran
    PS> venv\Scripts\activate
    (venv) PS>
    
    61, which works for the Bash and Zsh shells.

  • Cấu trúc cây giảm này cung cấp cho bạn một cái nhìn tổng quan tốt hơn về những gì đang diễn ra trong thư mục môi trường ảo của bạn: is an initially empty folder that Python uses to include C header files for packages you might install that depend on C extensions.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    53 là một thư mục trống ban đầu mà Python sử dụng để bao gồm các tệp tiêu đề C cho các gói bạn có thể cài đặt phụ thuộc vào các tiện ích mở rộng C. contains the
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 directory nested in a folder that designates the Python version (
    PS> venv\Scripts\activate
    (venv) PS>
    
    76).
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 is one of the main reasons for creating your virtual environment. This folder is where you’ll install external packages that you want to use within your virtual environment. By default, your virtual environment comes preinstalled with two dependencies,
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 and setuptools. You’ll learn more about them in a bit.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    54 chứa thư mục
    PS> venv\Scripts\activate
    (venv) PS>
    
    55, đây là một trong những lý do chính để tạo môi trường ảo của bạn. Thư mục này là nơi bạn sẽ cài đặt các gói bên ngoài mà bạn muốn sử dụng trong môi trường ảo của mình. Theo mặc định, môi trường ảo của bạn được cài đặt sẵn với hai phụ thuộc,
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools. Bạn sẽ tìm hiểu thêm về họ một chút.
    in many Linux systems comes as a symlink to
    PS> venv\Scripts\activate
    (venv) PS>
    
    74 for compatibility reasons. Some Linux systems may use the distinction between
    PS> venv\Scripts\activate
    (venv) PS>
    
    74 and
    PS> venv\Scripts\activate
    (venv) PS>
    
    79 to install different versions of libraries depending on their architecture.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    62 là một tệp quan trọng cho môi trường ảo của bạn. Nó chỉ chứa một vài cặp giá trị khóa mà Python sử dụng để đặt các biến trong mô-đun
    PS> venv\Scripts\activate
    (venv) PS>
    
    63 xác định trình thông dịch Python nào và thư mục gói trang web nào mà phiên Python hiện tại sẽ sử dụng. Bạn sẽ tìm hiểu thêm về các cài đặt trong tệp này khi bạn đọc về cách thức hoạt động của môi trường ảo.
    is a crucial file for your virtual environment. It contains only a couple of key-value pairs that Python uses to set variables in the
    PS> venv\Scripts\activate
    (venv) PS>
    
    63 module that determine which Python interpreter and which site-packages directory the current Python session will use. You’ll learn more about the settings in this file when you read about how a virtual environment works.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    64 chứa các tệp thực thi của môi trường ảo của bạn. Đáng chú ý nhất là trình thông dịch Python (
    PS> venv\Scripts\activate
    (venv) PS>
    
    23) và
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 thực thi (
    PS> venv\Scripts\activate
    (venv) PS>
    
    16), cũng như các liên kết tương ứng của chúng (
    PS> venv\Scripts\activate
    (venv) PS>
    
    20,
    PS> venv\Scripts\activate
    (venv) PS>
    
    21,
    PS> venv\Scripts\activate
    (venv) PS>
    
    70,
    PS> venv\Scripts\activate
    (venv) PS>
    
    71). Thư mục cũng chứa các tập lệnh kích hoạt cho môi trường ảo của bạn. Tập lệnh kích hoạt cụ thể của bạn phụ thuộc vào vỏ bạn sử dụng. Ví dụ, trong hướng dẫn này, bạn đã chạy
    PS> venv\Scripts\activate
    (venv) PS>
    
    61, hoạt động cho vỏ bash và zsh.
    contains the executable files of your virtual environment. Most notable are the Python interpreter (
    PS> venv\Scripts\activate
    (venv) PS>
    
    23) and the
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 executable (
    PS> venv\Scripts\activate
    (venv) PS>
    
    16), as well as their respective symlinks (
    PS> venv\Scripts\activate
    (venv) PS>
    
    20,
    PS> venv\Scripts\activate
    (venv) PS>
    
    21,
    PS> venv\Scripts\activate
    (venv) PS>
    
    70,
    PS> venv\Scripts\activate
    (venv) PS>
    
    71). The folder also contains activation scripts for your virtual environment. Your specific activation script depends on what shell you use. For example, in this tutorial, you ran
    PS> venv\Scripts\activate
    (venv) PS>
    
    61, which works for the Bash and Zsh shells.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    73 là một thư mục trống ban đầu mà Python sử dụng để bao gồm các tệp tiêu đề C cho các gói bạn có thể cài đặt phụ thuộc vào các tiện ích mở rộng C. is an initially empty folder that Python uses to include C header files for packages you might install that depend on C extensions.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    74 chứa thư mục
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 được lồng trong một thư mục chỉ định phiên bản Python (
    PS> venv\Scripts\activate
    (venv) PS>
    
    76).
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 là một trong những lý do chính để tạo môi trường ảo của bạn. Thư mục này là nơi bạn sẽ cài đặt các gói bên ngoài mà bạn muốn sử dụng trong môi trường ảo của mình. Theo mặc định, môi trường ảo của bạn được cài đặt sẵn với hai phụ thuộc,
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools. Bạn sẽ tìm hiểu thêm về họ một chút.
    contains the
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 directory nested in a folder that designates the Python version (
    PS> venv\Scripts\activate
    (venv) PS>
    
    76).
    PS> venv\Scripts\activate
    (venv) PS>
    
    33 is one of the main reasons for creating your virtual environment. This folder is where you’ll install external packages that you want to use within your virtual environment. By default, your virtual environment comes preinstalled with two dependencies,
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 and setuptools. You’ll learn more about them in a bit.

  • PS> venv\Scripts\activate
    (venv) PS>
    
    62 là một tệp quan trọng cho môi trường ảo của bạn. Nó chỉ chứa một vài cặp giá trị khóa mà Python sử dụng để đặt các biến trong mô-đun
    PS> venv\Scripts\activate
    (venv) PS>
    
    63 xác định trình thông dịch Python nào và thư mục gói trang web nào mà phiên Python hiện tại sẽ sử dụng. Bạn sẽ tìm hiểu thêm về các cài đặt trong tệp này khi bạn đọc về cách thức hoạt động của môi trường ảo.
    is a crucial file for your virtual environment. It contains only a couple of key-value pairs that Python uses to set variables in the
    PS> venv\Scripts\activate
    (venv) PS>
    
    63 module that determine which Python interpreter and which site-packages directory the current Python session will use. You’ll learn more about the settings in this file when you read about how a virtual environment works.

Từ cái nhìn mắt chim này về nội dung của thư mục môi trường ảo của bạn, bạn có thể thu nhỏ hơn nữa để khám phá ra rằng có ba phần thiết yếu của môi trường ảo Python:

  1. Một bản sao hoặc một symlink của nhị phân PythonPython binary
  2. Một tệp
    PS> venv\Scripts\activate
    (venv) PS>
    
    62
    PS> venv\Scripts\activate
    (venv) PS>
    
    62 file
  3. Một thư mục gói trang website-packages directory

Các gói được cài đặt bên trong

PS> venv\Scripts\activate
(venv) PS>
33 là tùy chọn nhưng lại là một mặc định hợp lý. Tuy nhiên, môi trường ảo của bạn vẫn sẽ là một môi trường ảo hợp lệ nếu thư mục này trống và có nhiều cách để tạo nó mà không cần cài đặt bất kỳ phụ thuộc nào.

Với cài đặt mặc định,

PS> venv\Scripts\activate
(venv) PS>
12 sẽ cài đặt cả
PS> venv\Scripts\activate
(venv) PS>
16 và setuptools. Sử dụng
PS> venv\Scripts\activate
(venv) PS>
16 là cách được khuyến nghị để cài đặt các gói trong Python và setuptools là một sự phụ thuộc cho
PS> venv\Scripts\activate
(venv) PS>
16. 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, bạn sẽ muốn có quyền truy cập vào
PS> venv\Scripts\activate
(venv) PS>
16.

Bạn có thể kiểm tra kỹ Python đó đã cài đặt cả

PS> venv\Scripts\activate
(venv) PS>
16 và setuptools vào môi trường ảo của bạn bằng cách sử dụng
$ source venv/bin/activate
(venv) $
10:

  • các cửa sổ
  • Linux + MacOS

$ source venv/bin/activate
(venv) $
0

$ source venv/bin/activate
(venv) $
1

Số phiên bản của bạn có thể khác nhau, nhưng đầu ra này xác nhận rằng Python đã cài đặt cả hai gói khi bạn tạo môi trường ảo với các cài đặt mặc định của nó.

Hai gói được cài đặt này tạo nên hầu hết nội dung của môi trường ảo mới của bạn. Tuy nhiên, bạn sẽ nhận thấy rằng cũng có một vài thư mục khác trong thư mục

PS> venv\Scripts\activate
(venv) PS>
33:

  • Mô -đun

    $ source venv/bin/activate
    (venv) $
    
    12, theo cách đúng với tên của nó, đảm bảo rằng khi thực hiện cài đặt gói, Python chọn mô hình con
    $ source venv/bin/activate
    (venv) $
    
    13 cục bộ của setuptools qua mô -đun thư viện tiêu chuẩn.
    , in a manner true to its name, ensures that when performing package installations, Python picks the local
    $ source venv/bin/activate
    (venv) $
    
    13 submodule of setuptools over the standard library’s
    $ source venv/bin/activate
    (venv) $
    
    14 module.

  • Mô -đun

    $ source venv/bin/activate
    (venv) $
    
    15 giúp các ứng dụng tự động khám phá các plugin và cho phép các gói Python truy cập các tệp tài nguyên của chúng. Nó phân phối cùng với
    $ source venv/bin/activate
    (venv) $
    
    16.
    helps applications discover plugins automatically and allows Python packages to access their resource files. It’s distributed together with
    $ source venv/bin/activate
    (venv) $
    
    16.

  • Các thư mục

    $ source venv/bin/activate
    (venv) $
    
    17 cho
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools chứa thông tin phân phối gói tồn tại để ghi lại thông tin về các gói đã cài đặt.
    for
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 and setuptools contain package distribution information that exists to record information about installed packages.

Cuối cùng, cũng có một tập tin có tên

$ source venv/bin/activate
(venv) $
19. Tệp này giúp đặt mức ưu tiên đường dẫn cho nhập khẩu
$ source venv/bin/activate
(venv) $
14 và hoạt động cùng với
$ source venv/bin/activate
(venv) $
21 để đảm bảo rằng Python thích phiên bản của
$ source venv/bin/activate
(venv) $
14 đi kèm với setuptools trên tệp tích hợp.
$ source venv/bin/activate
(venv) $
19
. This file helps set the path precedence for
$ source venv/bin/activate
(venv) $
14 imports and works together with
$ source venv/bin/activate
(venv) $
21 to ensure that Python prefers the version of
$ source venv/bin/activate
(venv) $
14 that comes bundled with setuptools over the built-in one.

Tại thời điểm này, bạn đã thấy tất cả các tệp và thư mục tạo nên môi trường ảo Python nếu bạn đã cài đặt nó bằng mô-đun

PS> venv\Scripts\activate
(venv) PS>
12 tích hợp.

Hãy nhớ rằng môi trường ảo của bạn chỉ là một cấu trúc thư mục, điều đó có nghĩa là bạn có thể xóa và tạo lại nó bất cứ lúc nào bạn muốn. Nhưng tại sao cấu trúc thư mục cụ thể này, và nó có thể làm gì?

Cài đặt Python bị cô lập

Môi trường ảo Python nhằm mục đích cung cấp một môi trường python nhẹ, bị cô lập mà bạn có thể nhanh chóng tạo ra và sau đó loại bỏ khi bạn không cần nó nữa. Cấu trúc thư mục mà bạn đã thấy ở trên làm cho điều đó có thể bằng cách cung cấp ba phần chính:

  1. Một bản sao hoặc một symlink của nhị phân PythonPython binary
  2. Một tệp
    PS> venv\Scripts\activate
    (venv) PS>
    
    62
    PS> venv\Scripts\activate
    (venv) PS>
    
    62 file
  3. Một thư mục gói trang website-packages directory

Bạn muốn đạt được một môi trường bị cô lập để bất kỳ gói bên ngoài nào bạn cài đặt giành được xung đột với các gói trang web toàn cầu. Những gì

PS> venv\Scripts\activate
(venv) PS>
12 làm để làm cho điều này có thể là tái tạo cấu trúc thư mục mà cài đặt Python tiêu chuẩn tạo ra.

Cấu trúc này chiếm vị trí của bản sao hoặc Symlink của nhị phân Python và thư mục gói trang web, trong đó Python cài đặt các gói bên ngoài.

Ngoài nhị phân Python và thư mục gói trang web, bạn sẽ nhận được tệp

PS> venv\Scripts\activate
(venv) PS>
62. Nó có một tệp nhỏ chỉ chứa một vài cặp giá trị khóa. Tuy nhiên, các cài đặt này rất quan trọng để làm cho môi trường ảo của bạn hoạt động:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

$ source venv/bin/activate
(venv) $
2

$ source venv/bin/activate
(venv) $
3

$ source venv/bin/activate
(venv) $
4

Bạn sẽ tìm hiểu thêm về tệp này trong phần sau khi đọc về cách thức hoạt động của môi trường ảo.

Giả sử bạn kiểm tra chặt chẽ cấu trúc thư mục môi trường ảo mới được đúc của bạn. Trong trường hợp đó, bạn có thể nhận thấy rằng việc cài đặt nhẹ này không chứa bất kỳ mô -đun thư viện tiêu chuẩn đáng tin cậy nào. Một số người có thể nói rằng Python không có thư viện tiêu chuẩn của nó giống như một chiếc xe đồ chơi không có pin!

Tuy nhiên, nếu bạn bắt đầu trình thông dịch Python từ trong môi trường ảo của mình, thì bạn vẫn có thể truy cập tất cả các tính năng từ thư viện tiêu chuẩn:

>>>

$ source venv/bin/activate
(venv) $
5

Trong đoạn mã ví dụ ở trên, bạn đã nhập thành công cả mô -đun

$ source venv/bin/activate
(venv) $
27 và phím tắt
$ source venv/bin/activate
(venv) $
28 từ mô -đun in đẹp. Sau đó, bạn đã sử dụng
$ source venv/bin/activate
(venv) $
29 để kiểm tra mô -đun
$ source venv/bin/activate
(venv) $
27.

Cả hai mô -đun là một phần của thư viện tiêu chuẩn, vậy tại sao bạn có quyền truy cập vào chúng mặc dù chúng không nằm trong cấu trúc thư mục của môi trường ảo Python của bạn?

Bạn có thể truy cập các mô-đun thư viện tiêu chuẩn Python, vì môi trường ảo của bạn tái sử dụng các mô-đun thư viện tiêu chuẩn của Python và các mô-đun thư viện tiêu chuẩn từ cài đặt Python mà bạn đã tạo ra môi trường ảo của mình. Trong phần sau, bạn sẽ tìm hiểu làm thế nào môi trường ảo đạt được liên kết với thư viện tiêu chuẩn Python cơ sở của bạn.

Ngoài các mô-đun thư viện tiêu chuẩn, bạn có thể tùy chọn cung cấp quyền truy cập môi trường ảo của mình vào các gói trang web cài đặt cơ sở thông qua một đối số khi tạo môi trường:

  • các cửa sổ
  • Linux

$ source venv/bin/activate
(venv) $
6

$ source venv/bin/activate
(venv) $
7

hệ điều hành Mac

Bạn sẽ tìm hiểu thêm về tệp này trong phần sau khi đọc về cách thức hoạt động của môi trường ảo.

Giả sử bạn kiểm tra chặt chẽ cấu trúc thư mục môi trường ảo mới được đúc của bạn. Trong trường hợp đó, bạn có thể nhận thấy rằng việc cài đặt nhẹ này không chứa bất kỳ mô -đun thư viện tiêu chuẩn đáng tin cậy nào. Một số người có thể nói rằng Python không có thư viện tiêu chuẩn của nó giống như một chiếc xe đồ chơi không có pin!

Tuy nhiên, nếu bạn bắt đầu trình thông dịch Python từ trong môi trường ảo của mình, thì bạn vẫn có thể truy cập tất cả các tính năng từ thư viện tiêu chuẩn:

>>>

Trong đoạn mã ví dụ ở trên, bạn đã nhập thành công cả mô -đun $ source venv/bin/activate (venv) $ 27 và phím tắt $ source venv/bin/activate (venv) $ 28 từ mô -đun in đẹp. Sau đó, bạn đã sử dụng $ source venv/bin/activate (venv) $ 29 để kiểm tra mô -đun $ source venv/bin/activate (venv) $ 27.

Cả hai mô -đun là một phần của thư viện tiêu chuẩn, vậy tại sao bạn có quyền truy cập vào chúng mặc dù chúng không nằm trong cấu trúc thư mục của môi trường ảo Python của bạn?

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

$ source venv/bin/activate
(venv) $
8

$ source venv/bin/activate
(venv) $
9

(venv) PS> python -m pip install <package-name>
0

Bạn sẽ tìm hiểu thêm về tệp này trong phần sau khi đọc về cách thức hoạt động của môi trường ảo.

Giả sử bạn kiểm tra chặt chẽ cấu trúc thư mục môi trường ảo mới được đúc của bạn. Trong trường hợp đó, bạn có thể nhận thấy rằng việc cài đặt nhẹ này không chứa bất kỳ mô -đun thư viện tiêu chuẩn đáng tin cậy nào. Một số người có thể nói rằng Python không có thư viện tiêu chuẩn của nó giống như một chiếc xe đồ chơi không có pin!

Tuy nhiên, nếu bạn bắt đầu trình thông dịch Python từ trong môi trường ảo của mình, thì bạn vẫn có thể truy cập tất cả các tính năng từ thư viện tiêu chuẩn:

Nó điều chỉnh quá trình tìm tiền tố

Với cấu trúc thư mục tiêu chuẩn tại chỗ, trình thông dịch Python trong môi trường ảo của bạn có thể hiểu nơi có tất cả các tệp có liên quan. Nó thực hiện điều này chỉ với sự thích ứng nhỏ với quy trình tìm tiền tố của nó theo đặc tả

PS> venv\Scripts\activate
(venv) PS>
12.

Thay vì tìm kiếm mô -đun

$ source venv/bin/activate
(venv) $
44 để xác định vị trí của thư viện tiêu chuẩn, trình thông dịch Python trước tiên tìm kiếm một tệp
PS> venv\Scripts\activate
(venv) PS>
62. Nếu trình thông dịch tìm thấy tệp này và nó chứa khóa
$ source venv/bin/activate
(venv) $
40, thì trình thông dịch sẽ sử dụng phím đó để đặt giá trị cho hai biến:

  1. $ source venv/bin/activate
    (venv) $
    
    47 sẽ giữ đường dẫn đến Python có thể thực thi được sử dụng để tạo môi trường ảo này, mà bạn có thể tìm thấy ở đường dẫn được xác định trong khóa
    $ source venv/bin/activate
    (venv) $
    
    40 trong
    PS> venv\Scripts\activate
    (venv) PS>
    
    62.
  2. $ source venv/bin/activate
    (venv) $
    
    50 sẽ chỉ vào thư mục chứa
    PS> venv\Scripts\activate
    (venv) PS>
    
    62.

Nếu trình thông dịch không tìm thấy tệp

PS> venv\Scripts\activate
(venv) PS>
62, thì nó sẽ xác định rằng nó không chạy trong môi trường ảo và cả
$ source venv/bin/activate
(venv) $
47 và
$ source venv/bin/activate
(venv) $
50 sau đó sẽ chỉ vào cùng một đường dẫn.

Bạn có thể xác nhận rằng điều này hoạt động như mô tả. Quay một trình thông dịch Python trong môi trường ảo đang hoạt động và kiểm tra cả hai biến:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>>

(venv) PS> python -m pip install <package-name>
1

>>>

(venv) PS> python -m pip install <package-name>
2

>>>

(venv) PS> python -m pip install <package-name>
3

Bạn có thể thấy rằng các biến trỏ đến các vị trí khác nhau trên hệ thống của bạn.

Bây giờ hãy tiếp tục và hủy kích hoạt môi trường ảo, nhập một phiên phiên dịch mới và chạy lại cùng một mã:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>>

(venv) PS> python -m pip install <package-name>
4

>>>

(venv) PS> python -m pip install <package-name>
5

>>>

(venv) PS> python -m pip install <package-name>
6

Bạn có thể thấy rằng các biến trỏ đến các vị trí khác nhau trên hệ thống của bạn.

Bây giờ hãy tiếp tục và hủy kích hoạt môi trường ảo, nhập một phiên phiên dịch mới và chạy lại cùng một mã:

Bạn sẽ thấy rằng cả

$ source venv/bin/activate
(venv) $
50 và
$ source venv/bin/activate
(venv) $
47 bây giờ chỉ vào cùng một đường dẫn.

Nếu hai biến này có các giá trị khác nhau, thì Python sẽ điều chỉnh trong đó nó sẽ tìm kiếm các mô -đun:

Các mô-đun thư viện tiêu chuẩn $ source venv/bin/activate (venv) $ 57 và PS> venv\Scripts\activate (venv) PS> 39 được sửa đổi sao cho thư viện tiêu chuẩn và các tệp tiêu đề được tìm thấy liên quan đến $ source venv/bin/activate (venv) $ 47 [Muff], trong khi các thư mục gói trang web [Vượt] vẫn được tìm thấy liên quan đến $ source venv/bin/activate (venv) $ 50 [ (Nguồn)

Thay đổi này một cách hiệu quả cho phép trình thông dịch Python trong môi trường ảo của bạn sử dụng các mô-đun thư viện tiêu chuẩn từ cài đặt Python cơ sở của bạn trong khi chỉ vào thư mục gói trang web bên trong của nó để cài đặt và truy cập các gói bên ngoài.

Nó liên kết trở lại thư viện tiêu chuẩn của bạn

Môi trường ảo Python nhằm mục đích trở thành một cách nhẹ để cung cấp cho bạn một môi trường Python bị cô lập mà bạn có thể nhanh chóng tạo ra và sau đó xóa khi bạn không cần nó nữa. Để thực hiện điều này,

PS> venv\Scripts\activate
(venv) PS>
12 chỉ sao chép các tệp cần thiết tối thiểu:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

(venv) PS> python -m pip install <package-name>
7

(venv) PS> python -m pip install <package-name>
8

(venv) PS> python -m pip install <package-name>
9

>>>

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

(venv) $ python -m pip install 
0

(venv) $ python -m pip install 
1

(venv) $ python -m pip install 
2

>>>

Bạn có thể thấy rằng các biến trỏ đến các vị trí khác nhau trên hệ thống của bạn.

Bây giờ hãy tiếp tục và hủy kích hoạt môi trường ảo, nhập một phiên phiên dịch mới và chạy lại cùng một mã:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>>

(venv) $ python -m pip install 
3

>>>

(venv) $ python -m pip install 
4

>>>

(venv) $ python -m pip install 
5

Bạn có thể thấy rằng các biến trỏ đến các vị trí khác nhau trên hệ thống của bạn.

Bây giờ hãy tiếp tục và hủy kích hoạt môi trường ảo, nhập một phiên phiên dịch mới và chạy lại cùng một mã:

Bạn sẽ thấy rằng cả

$ source venv/bin/activate
(venv) $
50 và
$ source venv/bin/activate
(venv) $
47 bây giờ chỉ vào cùng một đường dẫn.

Nếu hai biến này có các giá trị khác nhau, thì Python sẽ điều chỉnh trong đó nó sẽ tìm kiếm các mô -đun:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>>

(venv) $ python -m pip install 
6

>>>

(venv) $ python -m pip install 
7

>>>

(venv) $ python -m pip install 
8

Lưu ý các dòng được tô sáng, đại diện cho đường dẫn đến thư mục gói trang web. Thư mục này chứa các mô -đun bên ngoài mà bạn đã cài đặt, ví dụ, sử dụng

PS> venv\Scripts\activate
(venv) PS>
16. Không có môi trường ảo được kích hoạt, thư mục này được lồng trong cùng một cấu trúc thư mục với Python có thể thực thi.

Tuy nhiên, nếu bạn kích hoạt môi trường ảo của mình trước khi bắt đầu một phiên phiên dịch khác và chạy lại các lệnh tương tự, thì bạn sẽ nhận được đầu ra khác nhau:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>>

(venv) $ python -m pip install 
9

>>>

(venv) PS> deactivate
PS>
0

>>>

(venv) PS> deactivate
PS>
1

Python đã thay thế đường dẫn thư mục trang web trang web mặc định bằng cách sống trong môi trường ảo của bạn. Thay đổi này có nghĩa là Python sẽ tải bất kỳ gói bên ngoài nào được cài đặt trong môi trường ảo của bạn. Ngược lại, vì đường dẫn đến thư mục gói trang web Python cơ sở của bạn không còn trong danh sách này nữa, Python đã giành được các mô-đun tải từ đó.

Sự thay đổi này trong cài đặt đường dẫn Python, tạo ra sự cô lập của các gói bên ngoài trong môi trường ảo của bạn.

Tùy chọn, bạn có thể nhận được quyền truy cập chỉ đọc vào thư mục gói trang web hệ thống của cài đặt Python cơ sở của bạn bằng cách truyền một đối số khi tạo môi trường ảo.

Nó thay đổi biến PS> venv\Scripts\activate (venv) PS> 17 của bạn khi kích hoạt

Để thuận tiện, bạn sẽ thường kích hoạt môi trường ảo của mình trước khi làm việc trong đó, mặc dù bạn không phải.

Để kích hoạt môi trường ảo của bạn, bạn cần thực hiện tập lệnh kích hoạt:

  • các cửa sổ
  • Linux

PS> venv\Scripts\activate
(venv) PS>

$ source venv/bin/activate
(venv) $

hệ điều hành Mac

Python đã thay thế đường dẫn thư mục trang web trang web mặc định bằng cách sống trong môi trường ảo của bạn. Thay đổi này có nghĩa là Python sẽ tải bất kỳ gói bên ngoài nào được cài đặt trong môi trường ảo của bạn. Ngược lại, vì đường dẫn đến thư mục gói trang web Python cơ sở của bạn không còn trong danh sách này nữa, Python đã giành được các mô-đun tải từ đó.

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

(venv) PS> deactivate
PS>
4

(venv) PS> deactivate
PS>
5

(venv) PS> deactivate
PS>
6

Python đã thay thế đường dẫn thư mục trang web trang web mặc định bằng cách sống trong môi trường ảo của bạn. Thay đổi này có nghĩa là Python sẽ tải bất kỳ gói bên ngoài nào được cài đặt trong môi trường ảo của bạn. Ngược lại, vì đường dẫn đến thư mục gói trang web Python cơ sở của bạn không còn trong danh sách này nữa, Python đã giành được các mô-đun tải từ đó.

Sự thay đổi này trong cài đặt đường dẫn Python, tạo ra sự cô lập của các gói bên ngoài trong môi trường ảo của bạn.

  1. Tùy chọn, bạn có thể nhận được quyền truy cập chỉ đọc vào thư mục gói trang web hệ thống của cài đặt Python cơ sở của bạn bằng cách truyền một đối số khi tạo môi trường ảo. It sets the
    $ source venv/bin/activate
    (venv) $
    
    76 variable to the root folder path of your virtual environment and prepends the relative location of its Python executable to your
    PS> venv\Scripts\activate
    (venv) PS>
    
    17.
  2. Nó thay đổi biến
    PS> venv\Scripts\activate
    (venv) PS>
    
    17 của bạn khi kích hoạt
    It changes the command prompt to the name that you passed when creating the virtual environment. It takes that name and puts it into parentheses, for example
    PS> venv\Scripts\activate
    (venv) PS>
    
    26.

Để thuận tiện, bạn sẽ thường kích hoạt môi trường ảo của mình trước khi làm việc trong đó, mặc dù bạn không phải.

  1. Để kích hoạt môi trường ảo của bạn, bạn cần thực hiện tập lệnh kích hoạt: Because the path to all the executables in your virtual environment now lives at the front of your
    PS> venv\Scripts\activate
    (venv) PS>
    
    17, your shell will invoke the internal versions of
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 or Python when you just type
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 or
    PS> venv\Scripts\activate
    (venv) PS>
    
    23.
  2. Linux + MacOS Because the script changed your command prompt, you’ll quickly know whether or not your virtual environment is activated.

Tập lệnh kích hoạt nào mà bạn sẽ phải chạy tùy thuộc vào hệ điều hành và vỏ mà bạn sử dụng.

Nếu bạn đào sâu vào cấu trúc thư mục môi trường ảo của mình, thì bạn sẽ tìm thấy một vài tập lệnh kích hoạt khác nhau mà nó xuất hiện với:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

(venv) PS> deactivate
PS>
7

(venv) PS> deactivate
PS>
8

(venv) PS> deactivate
PS>
9

Python đã thay thế đường dẫn thư mục trang web trang web mặc định bằng cách sống trong môi trường ảo của bạn. Thay đổi này có nghĩa là Python sẽ tải bất kỳ gói bên ngoài nào được cài đặt trong môi trường ảo của bạn. Ngược lại, vì đường dẫn đến thư mục gói trang web Python cơ sở của bạn không còn trong danh sách này nữa, Python đã giành được các mô-đun tải từ đó.

Sự thay đổi này trong cài đặt đường dẫn Python, tạo ra sự cô lập của các gói bên ngoài trong môi trường ảo của bạn.

Tùy chọn, bạn có thể nhận được quyền truy cập chỉ đọc vào thư mục gói trang web hệ thống của cài đặt Python cơ sở của bạn bằng cách truyền một đối số khi tạo môi trường ảo.

Nó thay đổi biến PS> venv\Scripts\activate (venv) PS> 17 của bạn khi kích hoạt

Để thuận tiện, bạn sẽ thường kích hoạt môi trường ảo của mình trước khi làm việc trong đó, mặc dù bạn không phải.

Để kích hoạt môi trường ảo của bạn, bạn cần thực hiện tập lệnh kích hoạt:

Linux + MacOS

Nếu bạn không kích hoạt môi trường ảo của mình, thì thay vào đó, bạn có thể vượt qua đường dẫn tuyệt đối của Python có thể thực thi trong môi trường ảo của bạn để chạy bất kỳ tập lệnh nào từ trong môi trường ảo của bạn:absolute path of the Python executable inside your virtual environment to run any script from within your virtual environment:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
0

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
1

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
2

Lệnh này sẽ bắt đầu trình thông dịch Python trong môi trường ảo của bạn chính xác giống như cách nếu bạn lần đầu tiên kích hoạt môi trường ảo và sau đó gọi nó bằng

PS> venv\Scripts\activate
(venv) PS>
23.

Làm thế nào bạn có thể xác nhận rằng sử dụng đường dẫn tuyệt đối mà không kích hoạt môi trường ảo bắt đầu cùng một trình thông dịch như khi bạn kích hoạt môi trường ảo và chạy

PS> venv\Scripts\activate
(venv) PS>
23?

Lấy một số ghi chú về các cách có thể để kiểm tra, sau đó thử một số giải pháp được đề cập trong khối giải pháp bên dưới.

Như được mô tả trong các phần trước của hướng dẫn này, bạn có thể:

  • In
    $ source venv/bin/activate
    (venv) $
    
    66 và xác nhận rằng thư mục gói trang web trong môi trường ảo của bạn được liệt kê
  • Xác nhận rằng
    $ source venv/bin/activate
    (venv) $
    
    50 đã thay đổi và bây giờ chỉ vào một thư mục trong cấu trúc thư mục môi trường ảo của bạn
  • Kích hoạt môi trường ảo, sau đó kiểm tra biến shell
    PS> venv\Scripts\activate
    (venv) PS>
    
    17 để tìm đường dẫn đến môi trường ảo của bạn

Nếu bạn không chắc chắn tại sao bất kỳ phương pháp nào trong số này có thể xác nhận rằng điều này hoạt động như mô tả, hãy theo các liên kết đến các phần có liên quan trong hướng dẫn này để làm mới bộ nhớ của bạn.

Ngoài ra, bạn có thể xác nhận Python nào có thể thực hiện được mà bạn đang sử dụng bằng cách bắt đầu thông dịch viên và chạy

$ source venv/bin/activate
(venv) $
99. Các lệnh này sẽ trả về đường dẫn tuyệt đối cho trình thông dịch Python hiện tại của bạn. Đường dẫn dẫn vào cấu trúc thư mục môi trường ảo của bạn?

Bạn thường kích hoạt môi trường ảo của mình trước khi làm việc với nó và hủy kích hoạt nó sau khi bạn hoàn thành. Tuy nhiên, có một trường hợp sử dụng hàng ngày trong đó sử dụng các đường dẫn tuyệt đối là một cách tiếp cận hữu ích.

Nhúng kích hoạt môi trường ảo của bạn vào kịch bản của bạn là một bài tập cầu kỳ không thường xuyên hơn nó không. Thay vào đó, được trang bị kiến ​​thức mà bạn đã đạt được trong hướng dẫn này, bạn có thể sử dụng đường dẫn tuyệt đối đến trình thông dịch Python trong môi trường ảo của bạn khi chạy tập lệnh của bạn.

Ví dụ, bạn có thể sử dụng điều này nếu bạn đang thiết lập công việc cron hàng giờ trên máy chủ Linux từ xa của mình để kiểm tra kết nối trang web không đồng bộ bằng cách sử dụng gói

(venv) PS> python -m pip install <package-name>
00 bên ngoài mà bạn đã cài đặt trong môi trường ảo:

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
3

Bạn không cần phải cố gắng kích hoạt môi trường ảo của mình để sử dụng đúng trình thông dịch Python có quyền truy cập vào các phụ thuộc mà bạn đã cài đặt bên trong môi trường ảo. Thay vào đó, bạn chỉ cần truyền con đường tuyệt đối đến nhị phân của trình thông dịch đó. Python chăm sóc phần còn lại cho bạn trong quá trình khởi tạo.

Miễn là bạn cung cấp con đường tuyệt đối đến thực thi Python của bạn, bạn không cần phải kích hoạt môi trường ảo của mình để tận hưởng những lợi ích của việc sử dụng một.

Làm thế nào bạn có thể tùy chỉnh một môi trường ảo?

Nếu bạn tự tin về môi trường ảo Python là gì và bạn muốn tùy chỉnh nó cho một trường hợp sử dụng cụ thể, thì bạn sẽ ở đúng nơi. Trong phần này, bạn sẽ tìm hiểu về các đối số tùy chọn mà bạn có thể vượt qua khi tạo môi trường ảo với

PS> venv\Scripts\activate
(venv) PS>
12 và cách các tùy chỉnh này có thể giúp bạn có được chính xác môi trường ảo bạn cần.

Thay đổi dấu nhắc lệnh

Bạn có thể thay đổi tên thư mục có chứa môi trường ảo của bạn khi bạn tạo nó bằng cách truyền một tên khác ngoài VENV. Trên thực tế, bạn sẽ thường thấy các tên khác nhau trong các dự án khác nhau. Một số trong số chúng thường được sử dụng:

  • PS> venv\Scripts\activate
    (venv) PS>
    
    12
  • (venv) PS> python -m pip install <package-name>
    
    03
  • (venv) PS> python -m pip install <package-name>
    
    04

Bạn có thể đặt tên cho thư mục mà bạn tạo cho môi trường ảo của bạn bất cứ điều gì bạn muốn.

Bất cứ tên nào bạn chọn sẽ hiển thị trong dấu nhắc lệnh của bạn sau khi bạn kích hoạt môi trường ảo:

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
4

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
5

Nếu bạn đặt cho thư mục môi trường ảo của mình một tên thay thế, bạn cũng sẽ cần xem xét tên đó khi bạn muốn chạy tập lệnh kích hoạt của mình, như được hiển thị trong ví dụ mã ở trên.

Nếu bạn muốn thuận tiện khi nhìn thấy một lời nhắc lệnh khác, nhưng bạn muốn giữ tên thư mục mô tả để bạn biết nó chứa một môi trường ảo, thì bạn có thể chuyển tên nhắc lệnh mong muốn của mình đến

(venv) PS> python -m pip install <package-name>
05:

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
6

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
7

Nếu bạn đặt cho thư mục môi trường ảo của mình một tên thay thế, bạn cũng sẽ cần xem xét tên đó khi bạn muốn chạy tập lệnh kích hoạt của mình, như được hiển thị trong ví dụ mã ở trên.

Nếu bạn muốn thuận tiện khi nhìn thấy một lời nhắc lệnh khác, nhưng bạn muốn giữ tên thư mục mô tả để bạn biết nó chứa một môi trường ảo, thì bạn có thể chuyển tên nhắc lệnh mong muốn của mình đến

(venv) PS> python -m pip install <package-name>
05:

Ghi đè các môi trường hiện có

Bạn có thể muốn xóa và tạo lại một trong những môi trường ảo của bạn tại bất kỳ thời điểm nào. Nếu bạn làm điều đó thường xuyên, thì bạn có thể vui mừng khi biết rằng bạn có thể thêm đối số

(venv) PS> python -m pip install <package-name>
09 để xóa nội dung của một môi trường hiện có trước khi Python tạo ra cái mới.

Trước khi bạn thử điều đó, nó rất hữu ích khi thấy rằng việc chạy lệnh để tạo ra một môi trường ảo mới mà không có đối số này đã giành được một môi trường ảo hiện có có cùng tên:

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
8

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
>>> sysconfig.get_path("platlib")
'C:\\Users\\Name\\AppData\\Local\\Programs\\Python\\Python310\\Lib\\site-packages'
9

Trong ví dụ mã này, trước tiên bạn đã tạo một môi trường ảo gọi là VENV, sau đó sử dụng thực thi môi trường

PS> venv\Scripts\activate
(venv) PS>
16 để cài đặt
(venv) PS> python -m pip install <package-name>
11 vào thư mục gói trang web của môi trường ảo của bạn. Sau đó, bạn đã sử dụng
$ source venv/bin/activate
(venv) $
10 để xác nhận rằng nó đã được cài đặt, cùng với các phụ thuộc của nó.

Trong dòng được tô sáng, bạn đã cố gắng tạo một môi trường ảo khác bằng cách sử dụng cùng tên, Venv.

Bạn có thể mong đợi

PS> venv\Scripts\activate
(venv) PS>
12 thông báo cho bạn rằng có một môi trường ảo hiện có trên cùng một đường dẫn, nhưng nó không có. Bạn có thể mong đợi
PS> venv\Scripts\activate
(venv) PS>
12 sẽ tự động xóa môi trường ảo hiện có có cùng tên và thay thế nó bằng một môi trường mới, nhưng nó cũng không làm điều đó. Thay vào đó, khi
PS> venv\Scripts\activate
(venv) PS>
12 tìm thấy một môi trường ảo có cùng tên trên đường dẫn bạn cung cấp, nó không làm bất cứ điều gì và một lần nữa, nó không truyền đạt điều này với bạn.

Nếu bạn liệt kê các gói đã cài đặt sau khi chạy lệnh tạo môi trường ảo lần thứ hai, thì bạn sẽ nhận thấy rằng

(venv) PS> python -m pip install <package-name>
11 và các phụ thuộc của nó vẫn hiển thị. Đây có thể không phải là những gì bạn muốn đạt được.

Thay vì điều hướng đến thư mục môi trường ảo của bạn và xóa nó trước, bạn có thể ghi đè rõ một môi trường ảo hiện có bằng cách sử dụng

(venv) PS> python -m pip install <package-name>
09:

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
0

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
1

Trong ví dụ mã này, trước tiên bạn đã tạo một môi trường ảo gọi là VENV, sau đó sử dụng thực thi môi trường

PS> venv\Scripts\activate
(venv) PS>
16 để cài đặt
(venv) PS> python -m pip install <package-name>
11 vào thư mục gói trang web của môi trường ảo của bạn. Sau đó, bạn đã sử dụng
$ source venv/bin/activate
(venv) $
10 để xác nhận rằng nó đã được cài đặt, cùng với các phụ thuộc của nó.

Trong dòng được tô sáng, bạn đã cố gắng tạo một môi trường ảo khác bằng cách sử dụng cùng tên, Venv.

Bạn có thể mong đợi PS> venv\Scripts\activate (venv) PS> 12 thông báo cho bạn rằng có một môi trường ảo hiện có trên cùng một đường dẫn, nhưng nó không có. Bạn có thể mong đợi PS> venv\Scripts\activate (venv) PS> 12 sẽ tự động xóa môi trường ảo hiện có có cùng tên và thay thế nó bằng một môi trường mới, nhưng nó cũng không làm điều đó. Thay vào đó, khi PS> venv\Scripts\activate (venv) PS> 12 tìm thấy một môi trường ảo có cùng tên trên đường dẫn bạn cung cấp, nó không làm bất cứ điều gì và một lần nữa, nó không truyền đạt điều này với bạn.

Nếu bạn liệt kê các gói đã cài đặt sau khi chạy lệnh tạo môi trường ảo lần thứ hai, thì bạn sẽ nhận thấy rằng

(venv) PS> python -m pip install <package-name>
11 và các phụ thuộc của nó vẫn hiển thị. Đây có thể không phải là những gì bạn muốn đạt được.

  • các cửa sổ
  • Linux + MacOS
  • Trong ví dụ mã này, trước tiên bạn đã tạo một môi trường ảo gọi là VENV, sau đó sử dụng thực thi môi trường
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 để cài đặt
    (venv) PS> python -m pip install <package-name>
    
    11 vào thư mục gói trang web của môi trường ảo của bạn. Sau đó, bạn đã sử dụng
    $ source venv/bin/activate
    (venv) $
    
    10 để xác nhận rằng nó đã được cài đặt, cùng với các phụ thuộc của nó.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
2

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
3

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
4

Trong dòng được tô sáng, bạn đã cố gắng tạo một môi trường ảo khác bằng cách sử dụng cùng tên, Venv.

Bạn có thể mong đợi

PS> venv\Scripts\activate
(venv) PS>
12 thông báo cho bạn rằng có một môi trường ảo hiện có trên cùng một đường dẫn, nhưng nó không có. Bạn có thể mong đợi
PS> venv\Scripts\activate
(venv) PS>
12 sẽ tự động xóa môi trường ảo hiện có có cùng tên và thay thế nó bằng một môi trường mới, nhưng nó cũng không làm điều đó. Thay vào đó, khi
PS> venv\Scripts\activate
(venv) PS>
12 tìm thấy một môi trường ảo có cùng tên trên đường dẫn bạn cung cấp, nó không làm bất cứ điều gì và một lần nữa, nó không truyền đạt điều này với bạn.

Nếu bạn liệt kê các gói đã cài đặt sau khi chạy lệnh tạo môi trường ảo lần thứ hai, thì bạn sẽ nhận thấy rằng

(venv) PS> python -m pip install <package-name>
11 và các phụ thuộc của nó vẫn hiển thị. Đây có thể không phải là những gì bạn muốn đạt được.

Thay vì điều hướng đến thư mục môi trường ảo của bạn và xóa nó trước, bạn có thể ghi đè rõ một môi trường ảo hiện có bằng cách sử dụng (venv) PS> python -m pip install 09:

Sử dụng ví dụ tương tự như trước đây, bạn đã thêm đối số

(venv) PS> python -m pip install <package-name>
09 tùy chọn khi chạy lệnh tạo lần thứ hai.

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
5

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
6

Trong ví dụ mã này, trước tiên bạn đã tạo một môi trường ảo gọi là VENV, sau đó sử dụng thực thi môi trường

PS> venv\Scripts\activate
(venv) PS>
16 để cài đặt
(venv) PS> python -m pip install <package-name>
11 vào thư mục gói trang web của môi trường ảo của bạn. Sau đó, bạn đã sử dụng
$ source venv/bin/activate
(venv) $
10 để xác nhận rằng nó đã được cài đặt, cùng với các phụ thuộc của nó.

Trong dòng được tô sáng, bạn đã cố gắng tạo một môi trường ảo khác bằng cách sử dụng cùng tên, Venv.

Bạn có thể mong đợi

PS> venv\Scripts\activate
(venv) PS>
12 thông báo cho bạn rằng có một môi trường ảo hiện có trên cùng một đường dẫn, nhưng nó không có. Bạn có thể mong đợi
PS> venv\Scripts\activate
(venv) PS>
12 sẽ tự động xóa môi trường ảo hiện có có cùng tên và thay thế nó bằng một môi trường mới, nhưng nó cũng không làm điều đó. Thay vào đó, khi
PS> venv\Scripts\activate
(venv) PS>
12 tìm thấy một môi trường ảo có cùng tên trên đường dẫn bạn cung cấp, nó không làm bất cứ điều gì và một lần nữa, nó không truyền đạt điều này với bạn.

Nếu bạn liệt kê các gói đã cài đặt sau khi chạy lệnh tạo môi trường ảo lần thứ hai, thì bạn sẽ nhận thấy rằng

(venv) PS> python -m pip install <package-name>
11 và các phụ thuộc của nó vẫn hiển thị. Đây có thể không phải là những gì bạn muốn đạt được.

Thay vì điều hướng đến thư mục môi trường ảo của bạn và xóa nó trước, bạn có thể ghi đè rõ một môi trường ảo hiện có bằng cách sử dụng

(venv) PS> python -m pip install <package-name>
09:

Nếu bạn muốn tiết kiệm nỗ lực thực hiện thủ công này, bạn có thể chỉ định rằng bạn muốn

PS> venv\Scripts\activate
(venv) PS>
16 liên hệ với PYPI và tự cập nhật ngay sau khi cài đặt bằng cách chuyển đối số
(venv) PS> python -m pip install <package-name>
40:

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
7

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
8

Giả sử bạn sử dụng đối số

(venv) PS> python -m pip install <package-name>
40 tùy chọn khi tạo môi trường ảo của bạn. Trong trường hợp đó, nó sẽ tự động thăm dò PYPI cho các phiên bản mới nhất của
PS> venv\Scripts\activate
(venv) PS>
16 và setuptools và cài đặt chúng nếu bánh xe cục bộ không được cập nhật.

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

Tránh cài đặt PS> venv\Scripts\activate (venv) PS> 16

Bạn có thể tự hỏi tại sao phải mất một thời gian để thiết lập môi trường ảo Python khi tất cả những gì nó làm là tạo cấu trúc thư mục. Lý do cho độ trễ thời gian chủ yếu là việc cài đặt

PS> venv\Scripts\activate
(venv) PS>
16.
PS> venv\Scripts\activate
(venv) PS>
16 và các phụ thuộc của nó rất lớn và làm nổ tung kích thước của môi trường ảo của bạn từ vài kilobyte sang nhiều megabyte!

Trong hầu hết các trường hợp sử dụng, bạn sẽ muốn cài đặt

PS> venv\Scripts\activate
(venv) PS>
16 trong môi trường ảo của mình vì bạn có thể sử dụng nó để cài đặt các gói bên ngoài từ PYPI. Tuy nhiên, nếu bạn không cần
PS> venv\Scripts\activate
(venv) PS>
16 vì bất kỳ lý do gì, thì bạn có thể sử dụng
(venv) PS> python -m pip install <package-name>
49 để tạo môi trường ảo mà không có nó:

  • các cửa sổ
  • Linux + MacOS
  • Giả sử bạn sử dụng đối số
    (venv) PS> python -m pip install <package-name>
    
    40 tùy chọn khi tạo môi trường ảo của bạn. Trong trường hợp đó, nó sẽ tự động thăm dò PYPI cho các phiên bản mới nhất của
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools và cài đặt chúng nếu bánh xe cục bộ không được cập nhật.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/home/name/path/to/venv/lib/python3.10/site-packages'
9

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
0

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
1

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

Tránh cài đặt

PS> venv\Scripts\activate
(venv) PS>
16

Bạn có thể tự hỏi tại sao phải mất một thời gian để thiết lập môi trường ảo Python khi tất cả những gì nó làm là tạo cấu trúc thư mục. Lý do cho độ trễ thời gian chủ yếu là việc cài đặt PS> venv\Scripts\activate (venv) PS> 16. PS> venv\Scripts\activate (venv) PS> 16 và các phụ thuộc của nó rất lớn và làm nổ tung kích thước của môi trường ảo của bạn từ vài kilobyte sang nhiều megabyte!

Trong hầu hết các trường hợp sử dụng, bạn sẽ muốn cài đặt

PS> venv\Scripts\activate
(venv) PS>
16 trong môi trường ảo của mình vì bạn có thể sử dụng nó để cài đặt các gói bên ngoài từ PYPI. Tuy nhiên, nếu bạn không cần
PS> venv\Scripts\activate
(venv) PS>
16 vì bất kỳ lý do gì, thì bạn có thể sử dụng
(venv) PS> python -m pip install <package-name>
49 để tạo môi trường ảo mà không có nó:

Linux

hệ điều hành Mac

Môi trường ảo của bạn vẫn làm mọi thứ đủ điều kiện là một môi trường ảo bằng cách cung cấp sự cô lập nhẹ với một Python có thể thực thi riêng biệt.

Để làm việc với môi trường ảo không có

PS> venv\Scripts\activate
(venv) PS>
16 được cài đặt, bạn có thể cài đặt thủ công các gói vào thư mục trang web của mình hoặc đặt các tệp zip của bạn vào đó sau đó nhập chúng bằng nhập khẩu Python ZIP.

  • các cửa sổ
  • Linux + MacOS

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
2

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
3

Giả sử bạn sử dụng đối số

(venv) PS> python -m pip install <package-name>
40 tùy chọn khi tạo môi trường ảo của bạn. Trong trường hợp đó, nó sẽ tự động thăm dò PYPI cho các phiên bản mới nhất của
PS> venv\Scripts\activate
(venv) PS>
16 và setuptools và cài đặt chúng nếu bánh xe cục bộ không được cập nhật.

  • các cửa sổ
  • Linux + MacOS
  • Giả sử bạn sử dụng đối số
    (venv) PS> python -m pip install <package-name>
    
    40 tùy chọn khi tạo môi trường ảo của bạn. Trong trường hợp đó, nó sẽ tự động thăm dò PYPI cho các phiên bản mới nhất của
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools và cài đặt chúng nếu bánh xe cục bộ không được cập nhật.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
4

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
5

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
6

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

Tránh cài đặt

PS> venv\Scripts\activate
(venv) PS>
16

  • các cửa sổ
  • Linux + MacOS
  • Giả sử bạn sử dụng đối số
    (venv) PS> python -m pip install <package-name>
    
    40 tùy chọn khi tạo môi trường ảo của bạn. Trong trường hợp đó, nó sẽ tự động thăm dò PYPI cho các phiên bản mới nhất của
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools và cài đặt chúng nếu bánh xe cục bộ không được cập nhật.

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
7

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
8

Đã qua rồi thông báo cảnh báo pesky và bạn có thể yên tâm rằng bạn đang sử dụng phiên bản gần đây nhất của

PS> venv\Scripts\activate
(venv) PS>
16.

>>> import sysconfig
>>> sysconfig.get_path("purelib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
>>> sysconfig.get_path("platlib")
'/Users/name/path/to/venv/lib/python3.10/site-packages'
9

Tránh cài đặt

PS> venv\Scripts\activate
(venv) PS>
16

Bạn có thể tự hỏi tại sao phải mất một thời gian để thiết lập môi trường ảo Python khi tất cả những gì nó làm là tạo cấu trúc thư mục. Lý do cho độ trễ thời gian chủ yếu là việc cài đặt PS> venv\Scripts\activate (venv) PS> 16. PS> venv\Scripts\activate (venv) PS> 16 và các phụ thuộc của nó rất lớn và làm nổ tung kích thước của môi trường ảo của bạn từ vài kilobyte sang nhiều megabyte!

Trong hầu hết các trường hợp sử dụng, bạn sẽ muốn cài đặt

PS> venv\Scripts\activate
(venv) PS>
16 trong môi trường ảo của mình vì bạn có thể sử dụng nó để cài đặt các gói bên ngoài từ PYPI. Tuy nhiên, nếu bạn không cần
PS> venv\Scripts\activate
(venv) PS>
16 vì bất kỳ lý do gì, thì bạn có thể sử dụng
(venv) PS> python -m pip install <package-name>
49 để tạo môi trường ảo mà không có nó:

  • Linux may create either a symlink or a copy, but some versions don’t support symlinks. Creating symlinks might require you to have administrator privileges.
  • hệ điều hành Mac distributions may create either a symlink or a copy and often opt for symlinks over copies.
  • Môi trường ảo của bạn vẫn làm mọi thứ đủ điều kiện là một môi trường ảo bằng cách cung cấp sự cô lập nhẹ với một Python có thể thực thi riêng biệt. always creates a copy of the binaries.

Để làm việc với môi trường ảo không có

PS> venv\Scripts\activate
(venv) PS>
16 được cài đặt, bạn có thể cài đặt thủ công các gói vào thư mục trang web của mình hoặc đặt các tệp zip của bạn vào đó sau đó nhập chúng bằng nhập khẩu Python ZIP.

Bao gồm các gói trang web hệ thống

Mặc dù có thể hữu ích khi SymLink The Executables để họ sẽ tự động duy trì đồng bộ ngay cả khi bạn nâng cấp cài đặt Python cơ sở của mình, nhưng độ yếu của phương pháp này có thể vượt xa lợi ích của nó. Ví dụ: khi bạn nhấp đúp vào

PS> venv\Scripts\activate
(venv) PS>
58 trong Windows, hệ điều hành sẽ háo hức giải quyết Symlink và bỏ qua môi trường ảo của bạn.

Nhiều khả năng, bạn đã thắng được bao giờ phải chạm vào các đối số này, nhưng nếu bạn có lý do chính đáng để cố gắng buộc các liên kết hoặc bản sao trên hệ điều hành của bạn mặc định, thì bạn có thể làm như vậy:

  • (venv) PS> python -m pip install <package-name>
    
    63 sẽ cố gắng tạo các liên kết symlink thay vì các bản sao. Tùy chọn này đã giành được bất kỳ ảnh hưởng nào đến các bản dựng MacOS.
    will attempt to create symlinks instead of copies. This option won’t have any effect on macOS builds.
  • (venv) PS> python -m pip install <package-name>
    
    64 sẽ cố gắng tạo các bản sao của các nhị phân python của bạn thay vì liên kết chúng với các tệp thực thi cài đặt Python Python cơ sở.
    will attempt to create copies of your Python binaries instead of linking them to the base Python installation’s executables.

Bạn có thể vượt qua một trong những đối số tùy chọn này khi tạo môi trường ảo của bạn.

Nâng cấp Python của bạn để phù hợp với hệ thống Python

Nếu bạn đã xây dựng môi trường ảo của mình bằng các bản sao thay vì Symlinks và sau đó cập nhật phiên bản Python cơ sở của bạn trên hệ điều hành, bạn có thể gặp phải phiên bản không phù hợp với các mô -đun thư viện tiêu chuẩn.

Mô -đun

PS> venv\Scripts\activate
(venv) PS>
12 cung cấp một giải pháp cho việc này. Đối số
(venv) PS> python -m pip install <package-name>
66 tùy chọn giữ nguyên thư mục trang web của bạn trong khi cập nhật các tệp nhị phân lên các phiên bản mới trên hệ thống của bạn:

  • các cửa sổ
  • Linux + MacOS

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
0

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
1

Nếu bạn chạy lệnh này và bạn đã cập nhật phiên bản Python của mình vì ban đầu tạo môi trường ảo, thì bạn sẽ giữ các thư viện đã cài đặt của mình, nhưng

PS> venv\Scripts\activate
(venv) PS>
12 sẽ cập nhật các tệp thực thi cho
PS> venv\Scripts\activate
(venv) PS>
16 và Python.

Trong phần này, bạn đã học được rằng bạn có thể áp dụng rất nhiều tùy chỉnh cho các môi trường ảo mà bạn xây dựng với mô -đun

PS> venv\Scripts\activate
(venv) PS>
12. Các điều chỉnh này có thể là các bản cập nhật tiện lợi thuần túy, chẳng hạn như đặt tên cho lệnh của bạn nhắc khác với thư mục môi trường của bạn, ghi đè lên các môi trường hiện có hoặc tạo nhiều môi trường với một lệnh. Các tùy chỉnh khác tạo ra các chức năng khác nhau trong môi trường ảo của bạn, ví dụ, bỏ qua việc cài đặt
PS> venv\Scripts\activate
(venv) PS>
16 và các phụ thuộc của nó hoặc liên kết trở lại thư mục trang web Python.

Nhưng nếu bạn muốn làm nhiều hơn thế thì sao? Trong phần tiếp theo, bạn sẽ khám phá các lựa chọn thay thế cho mô-đun

PS> venv\Scripts\activate
(venv) PS>
12 tích hợp.

Những lựa chọn phổ biến nào khác tồn tại, ngoài PS> venv\Scripts\activate (venv) PS> 12?

Mô -đun

PS> venv\Scripts\activate
(venv) PS>
12 là một cách tuyệt vời để làm việc với các môi trường ảo Python. Một trong những lợi thế chính của nó là
PS> venv\Scripts\activate
(venv) PS>
12 được cài đặt sẵn với Python bắt đầu từ phiên bản 3.3. Nhưng đó là lựa chọn duy nhất bạn có. Bạn có thể sử dụng các công cụ khác để tạo và xử lý các môi trường ảo trong Python.

Trong phần này, bạn sẽ tìm hiểu về hai công cụ phổ biến. Chúng có phạm vi khác nhau nhưng cả hai cũng thường được sử dụng cho cùng mục đích với mô -đun

PS> venv\Scripts\activate
(venv) PS>
12:

  1. VirtualEnv là một siêu sao của
    PS> venv\Scripts\activate
    (venv) PS>
    
    12 và cung cấp cơ sở cho việc thực hiện nó. Nó là một công cụ mạnh mẽ, có thể mở rộng để tạo ra các môi trường Python bị cô lập.
    is a superset of
    PS> venv\Scripts\activate
    (venv) PS>
    
    12 and provides the basis for its implementation. It’s a powerful, extendable tool for creating isolated Python environments.
  2. Conda cung cấp gói, phụ thuộc và quản lý môi trường cho Python và các ngôn ngữ khác. offers package, dependency, and environment management for Python and other languages.

Họ có một số lợi thế so với

PS> venv\Scripts\activate
(venv) PS>
12, nhưng họ không đi kèm với cài đặt Python tiêu chuẩn của bạn, vì vậy bạn sẽ phải cài đặt chúng một cách riêng biệt.

Dự án ảo

VirtualEnv là một công cụ được sản xuất cụ thể để tạo ra các môi trường python bị cô lập. Nó đã được yêu thích lâu năm trong cộng đồng Python và đi trước mô-đun

PS> venv\Scripts\activate
(venv) PS>
12 tích hợp.

Gói là một siêu sao của

PS> venv\Scripts\activate
(venv) PS>
12, cho phép bạn làm mọi thứ bạn có thể làm bằng cách sử dụng
PS> venv\Scripts\activate
(venv) PS>
12, và hơn thế nữa. VirtualEnv cho phép bạn:

  • Tạo môi trường ảo nhanh hơn
  • Khám phá các phiên bản được cài đặt của Python mà không cần cung cấp đường dẫn tuyệt đối
  • Nâng cấp công cụ bằng cách sử dụng
    PS> venv\Scripts\activate
    (venv) PS>
    
    16
  • Tự mở rộng chức năng của công cụ

Bất kỳ chức năng bổ sung nào có thể có ích khi bạn làm việc trên các dự án Python của mình. Bạn thậm chí có thể muốn lưu một kế hoạch chi tiết của VirtualEnv trong mã cùng với dự án của bạn để hỗ trợ khả năng tái tạo. VirtualEnv có API lập trình phong phú cho phép bạn mô tả các môi trường ảo mà không cần tạo chúng.

Sau khi cài đặt

(venv) PS> python -m pip install <package-name>
82 trên hệ thống của bạn, bạn có thể tạo và kích hoạt môi trường ảo mới tương tự như cách bạn thực hiện bằng cách sử dụng
PS> venv\Scripts\activate
(venv) PS>
12:

  • các cửa sổ
  • Linux + MacOS
  • Nếu bạn chạy lệnh này và bạn đã cập nhật phiên bản Python của mình vì ban đầu tạo môi trường ảo, thì bạn sẽ giữ các thư viện đã cài đặt của mình, nhưng
    PS> venv\Scripts\activate
    (venv) PS>
    
    12 sẽ cập nhật các tệp thực thi cho
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và Python.

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
2

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
3

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
4

Trong phần này, bạn đã học được rằng bạn có thể áp dụng rất nhiều tùy chỉnh cho các môi trường ảo mà bạn xây dựng với mô -đun

PS> venv\Scripts\activate
(venv) PS>
12. Các điều chỉnh này có thể là các bản cập nhật tiện lợi thuần túy, chẳng hạn như đặt tên cho lệnh của bạn nhắc khác với thư mục môi trường của bạn, ghi đè lên các môi trường hiện có hoặc tạo nhiều môi trường với một lệnh. Các tùy chỉnh khác tạo ra các chức năng khác nhau trong môi trường ảo của bạn, ví dụ, bỏ qua việc cài đặt
PS> venv\Scripts\activate
(venv) PS>
16 và các phụ thuộc của nó hoặc liên kết trở lại thư mục trang web Python.

Có hai lợi thế người dùng chính với VirtualEnv trên

PS> venv\Scripts\activate
(venv) PS>
12:

  1. Tốc độ: VirtualEnv tạo ra môi trường nhanh hơn nhiều. Virtualenv creates environments much more quickly.
  2. Cập nhật: Nhờ các bánh xe nhúng Virtualenv, bạn sẽ nhận được cập nhật
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 và setuptools mà không cần kết nối với Internet ngay khi bạn lần đầu tiên thiết lập môi trường ảo.
    Thanks to virtualenv’s embedded wheels, you’ll receive up-to-date
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 and setuptools without needing to connect to the Internet right when you first set up the virtual environment.

Nếu bạn cần làm việc với các phiên bản di sản của Python 2.x, thì VirtualEnv cũng có thể hữu ích cho điều đó. Nó hỗ trợ xây dựng các môi trường ảo Python bằng cách sử dụng các tệp thực thi Python 2, điều này không thể sử dụng

PS> venv\Scripts\activate
(venv) PS>
12.

Nếu bạn chỉ bắt đầu với các môi trường ảo trong Python, thì bạn có thể muốn gắn bó với mô-đun

PS> venv\Scripts\activate
(venv) PS>
12 tích hợp. Tuy nhiên, nếu bạn đã sử dụng nó trong một thời gian và bạn sẽ gặp phải các giới hạn của công cụ, thì đó là một ý tưởng tuyệt vời để bắt đầu sử dụng VirtualEnv.

Gói Conda và người quản lý môi trường

Conda cung cấp cho bạn một gói thay thế và phương pháp quản lý môi trường. Mặc dù công cụ này chủ yếu được liên kết với cộng đồng khoa học dữ liệu và phân phối Anaconda Python, các trường hợp sử dụng tiềm năng của nó vượt ra ngoài cộng đồng đó và ngoài việc chỉ cài đặt các gói Python:

Gói, phụ thuộc và quản lý môi trường cho bất kỳ ngôn ngữ nào, Python, R, Ruby, Lua, Scala, Java, JavaScript, C/ C ++, Fortran, v.v. (Nguồn)

Mặc dù bạn cũng có thể sử dụng Conda để thiết lập môi trường bị cô lập để cài đặt các gói Python, nhưng đây chỉ là một tính năng của công cụ:

PIP cài đặt các gói Python trong một môi trường; Conda cài đặt bất kỳ gói nào trong môi trường Conda. (Nguồn)

Khi bạn có thể thu thập từ trích dẫn này, Conda hoàn thành sự cô lập này khác với mô -đun

PS> venv\Scripts\activate
(venv) PS>
12 và dự án ảo.

Conda là dự án của riêng mình mà không liên quan đến

PS> venv\Scripts\activate
(venv) PS>
16. Bạn có thể thiết lập nó trên hệ thống của mình bằng trình cài đặt miniconda, mang theo các yêu cầu tối thiểu để chạy
(venv) PS> python -m pip install <package-name>
91 trên hệ thống của bạn.

Trong cấu hình mặc định của mình, Conda nhận các gói của mình từ repo.anaconda.com thay vì PYPI. Chỉ số gói thay thế này được duy trì bởi dự án Anaconda và là PYPI tương tự, nhưng không giống nhau.

Bởi vì Conda không giới hạn trong các gói Python, bạn sẽ tìm thấy các gói khác, thường liên quan đến khoa học dữ liệu trên chỉ số gói Conda, được viết bằng các ngôn ngữ khác nhau. Ngược lại, có các gói Python có sẵn trên PYPI mà bạn có thể cài đặt bằng cách sử dụng Conda vì chúng có mặt trong kho lưu trữ gói đó. Nếu bạn cần một gói như vậy trong môi trường Conda của bạn, thì thay vào đó bạn có thể cài đặt nó ở đó bằng

PS> venv\Scripts\activate
(venv) PS>
16.

Nếu bạn làm việc trong không gian khoa học dữ liệu và với Python cùng với các dự án khoa học dữ liệu khác, thì Conda là một lựa chọn tuyệt vời hoạt động trên các nền tảng và ngôn ngữ.

Sau khi cài đặt Anaconda hoặc Miniconda, bạn có thể tạo môi trường Conda:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
5

Giả sử phiên PowerShell tiêu chuẩn của bạn không nhận ra lệnh

(venv) PS> python -m pip install <package-name>
91 sau khi cài đặt thành công Anaconda. Trong trường hợp đó, bạn có thể tìm kiếm lời nhắc của Anaconda PowerShell trong các chương trình của mình và làm việc với chương trình đó.

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
6

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
7

Lệnh này tạo ra một môi trường Conda mới ở một vị trí trung tâm trên máy tính của bạn.

Để làm việc trong môi trường Conda mới của bạn, bạn sẽ cần phải kích hoạt nó:

  • các cửa sổ
  • Linux

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
8

PS> python -m pip install django==2.2.26
PS> python -m pip list
Package    Version
---------- -------
Django     2.2.26
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2

PS> python -m pip install django==4.0.3
PS> python -m pip list
Package    Version
---------- -------
asgiref    3.5.0
Django     4.0.3
pip        22.0.4
pytz       2022.1
setuptools 58.1.0
sqlparse   0.4.2
tzdata     2022.1
9

hệ điều hành Mac

  • các cửa sổ
  • Linux

PS> venv\Scripts\activate
(venv) PS>
00

PS> venv\Scripts\activate
(venv) PS>
01

hệ điều hành Mac

Giả sử phiên PowerShell tiêu chuẩn của bạn không nhận ra lệnh

(venv) PS> python -m pip install <package-name>
91 sau khi cài đặt thành công Anaconda. Trong trường hợp đó, bạn có thể tìm kiếm lời nhắc của Anaconda PowerShell trong các chương trình của mình và làm việc với chương trình đó.

  • các cửa sổ
  • Linux

PS> venv\Scripts\activate
(venv) PS>
02

PS> venv\Scripts\activate
(venv) PS>
03

hệ điều hành Mac

Giả sử phiên PowerShell tiêu chuẩn của bạn không nhận ra lệnh

(venv) PS> python -m pip install <package-name>
91 sau khi cài đặt thành công Anaconda. Trong trường hợp đó, bạn có thể tìm kiếm lời nhắc của Anaconda PowerShell trong các chương trình của mình và làm việc với chương trình đó.

Lệnh này tạo ra một môi trường Conda mới ở một vị trí trung tâm trên máy tính của bạn.

Để làm việc trong môi trường Conda mới của bạn, bạn sẽ cần phải kích hoạt nó:

Linux + MacOS

Trong phần này, bạn sẽ học cách trích xuất thông tin cần thiết của môi trường ảo của bạn vào một tệp duy nhất để bạn có thể nhanh chóng xóa và tạo lại thư mục môi trường ảo của mình bất cứ lúc nào và trên bất kỳ máy tính nào.

Bạn cũng sẽ tìm hiểu về hai cách tổ chức khác nhau để giữ các thư mục môi trường ảo của bạn và về một số công cụ của bên thứ ba phổ biến có thể giúp bạn quản lý môi trường ảo của mình.

Quyết định nơi tạo các thư mục môi trường của bạn

Một môi trường ảo Python chỉ là một cấu trúc thư mục. Bạn có thể đặt nó ở bất cứ đâu trên hệ thống của bạn. Tuy nhiên, một cấu trúc nhất quán có thể giúp ích và có hai ý kiến ​​nổi bật về nơi tạo ra các thư mục môi trường ảo của bạn:

  1. Bên trong mỗi thư mục dự án riêng lẻproject folder
  2. Ở một vị trí duy nhất, ví dụ như trong thư mục thư mục nhà của bạnsingle location, for example in a subfolder of your home directory

Cả hai đều có giá trị và nhược điểm, và sở thích của bạn cuối cùng sẽ phụ thuộc vào quy trình làm việc của bạn.

Theo cách tiếp cận của dự án, bạn tạo một môi trường ảo mới trong thư mục gốc của dự án mà sẽ sử dụng môi trường ảo này cho:project-folder approach approach, you create a new virtual environment in the root folder of the project that’ll use this virtual environment for:

PS> venv\Scripts\activate
(venv) PS>
04

Thư mục môi trường ảo sau đó sống cạnh nhau với bất kỳ mã nào mà bạn sẽ viết cho dự án đó.

Cấu trúc này có lợi thế mà bạn sẽ biết môi trường ảo nào thuộc về dự án nào và bạn có thể kích hoạt môi trường ảo của mình bằng cách sử dụng đường dẫn tương đối ngắn sau khi bạn điều hướng vào thư mục dự án.

Theo cách tiếp cận duy nhất, bạn giữ tất cả các môi trường ảo của mình trong một thư mục duy nhất, ví dụ như trong thư mục thư mục nhà của bạn:single-folder approach, you keep all your virtual environments in a single folder, for example in a subfolder of your home directory:

  • các cửa sổ
  • Linux
  • hệ điều hành Mac

PS> venv\Scripts\activate
(venv) PS>
05

PS> venv\Scripts\activate
(venv) PS>
06

PS> venv\Scripts\activate
(venv) PS>
07

Nếu bạn sử dụng phương pháp này, có thể ít nỗ lực hơn để theo dõi môi trường ảo nào bạn đã tạo ra. Bạn có thể đến một vị trí duy nhất trên hệ điều hành của mình để kiểm tra tất cả các môi trường ảo và quyết định những nơi nào cần giữ và những nơi nào cần xóa.

Mặt khác, bạn đã giành chiến thắng để có thể kích hoạt môi trường ảo của mình một cách nhanh chóng bằng cách sử dụng đường dẫn tương đối khi bạn đã điều hướng đến thư mục dự án của mình. Thay vào đó, nó tốt nhất để kích hoạt nó bằng cách sử dụng đường dẫn tuyệt đối đến tập lệnh kích hoạt trong thư mục môi trường ảo tương ứng.

Tùy chọn thứ ba là để lại quyết định này cho môi trường phát triển tích hợp (IDE) của bạn. Nhiều chương trình trong số này bao gồm các tùy chọn để tự động tạo môi trường ảo cho bạn khi bạn bắt đầu một dự án mới.

Để tìm hiểu thêm về cách IDE yêu thích của bạn xử lý môi trường ảo, hãy xem tài liệu trực tuyến của nó về chủ đề này. Ví dụ, mã vs và pycharm có cách tiếp cận riêng để tạo môi trường ảo.

Coi chúng như những vật dụng xử lý

Môi trường ảo là các cấu trúc thư mục dùng một lần mà bạn sẽ có thể xóa và tạo lại một cách an toàn bất cứ lúc nào mà không mất thông tin về dự án mã của bạn.

Điều này có nghĩa là bạn thường không đặt bất kỳ mã hoặc thông tin bổ sung nào vào môi trường ảo của bạn theo cách thủ công. Bất cứ điều gì đi vào đó nên được xử lý bởi Trình quản lý gói của bạn, thường sẽ là

PS> venv\Scripts\activate
(venv) PS>
16 hoặc
(venv) PS> python -m pip install <package-name>
91.

Bạn cũng không nên cam kết môi trường ảo của mình để kiểm soát phiên bản và bạn không nên gửi nó với dự án của mình.

Bởi vì môi trường ảo không phải là hoàn toàn tự cung cấp Python nhưng dựa vào thư viện tiêu chuẩn Python Base Python, bạn đã giành được một ứng dụng di động bằng cách phân phối môi trường ảo của bạn cùng với mã của bạn.

Môi trường ảo có nghĩa là môi trường nhẹ, dùng một lần và bị cô lập để phát triển các dự án của bạn.

Tuy nhiên, bạn sẽ có thể tạo lại môi trường Python của mình trên một máy tính khác để bạn có thể chạy chương trình của mình hoặc tiếp tục phát triển nó ở đó. Làm thế nào bạn có thể biến điều đó thành hiện thực khi bạn coi môi trường ảo của mình là dùng một lần và giành được cam kết điều khiển phiên bản?

Ghim phụ thuộc của bạn

Để làm cho môi trường ảo của bạn có thể tái tạo, bạn cần một cách để mô tả nội dung của nó. Cách phổ biến nhất để làm điều này là tạo tệp

(venv) $ python -m pip install 
00 trong khi môi trường ảo của bạn đang hoạt động:

  • các cửa sổ
  • Linux

PS> venv\Scripts\activate
(venv) PS>
08

PS> venv\Scripts\activate
(venv) PS>
09

hệ điều hành Mac

Nếu bạn sử dụng phương pháp này, có thể ít nỗ lực hơn để theo dõi môi trường ảo nào bạn đã tạo ra. Bạn có thể đến một vị trí duy nhất trên hệ điều hành của mình để kiểm tra tất cả các môi trường ảo và quyết định những nơi nào cần giữ và những nơi nào cần xóa.

  • các cửa sổ
  • Linux + MacOS

PS> venv\Scripts\activate
(venv) PS>
10

PS> venv\Scripts\activate
(venv) PS>
11

Trong đoạn mã ví dụ ở trên, bạn đã tạo một môi trường ảo mới có tên

(venv) $ python -m pip install 
06, kích hoạt nó và cài đặt tất cả các phụ thuộc bên ngoài mà trước đây bạn đã ghi trong tệp
(venv) $ python -m pip install 
00 của mình.

Nếu bạn sử dụng

$ source venv/bin/activate
(venv) $
10 để kiểm tra các phụ thuộc hiện đã được cài đặt, thì bạn sẽ thấy rằng cả hai môi trường ảo,
PS> venv\Scripts\activate
(venv) PS>
12 và
(venv) $ python -m pip install 
06, hiện có chứa các gói bên ngoài giống nhau.

Hãy nhớ rằng trong khi đây là một cách phổ biến để vận chuyển thông tin phụ thuộc với một dự án mã trong Python, nhưng đó không phải là chủ nghĩa quyết định:

  1. Phiên bản Python: Tệp yêu cầu này không bao gồm thông tin về phiên bản Python mà bạn đã sử dụng làm trình thông dịch Python cơ sở của mình khi tạo môi trường ảo. This requirements file doesn’t include information about which version of Python you used as your base Python interpreter when creating the virtual environment.
  2. Phụ thuộc phụ: Tùy thuộc vào cách bạn tạo tệp yêu cầu của mình, nó có thể không bao gồm thông tin phiên bản về phụ thuộc phụ của các phụ thuộc của bạn. Điều này có nghĩa là ai đó có thể nhận được một phiên bản khác của thanh toán con nếu gói đó được cập nhật âm thầm sau khi bạn tạo tệp yêu cầu của mình. Depending on how you create your requirements file, it may not include version information about sub-dependencies of your dependencies. This means that someone could get a different version of a subpackage if that package was silently updated after you created your requirements file.

Bạn có thể dễ dàng giải quyết một trong những vấn đề này bằng

(venv) $ python -m pip install 
00, nhưng nhiều công cụ quản lý phụ thuộc của bên thứ ba cố gắng giải quyết chúng để đảm bảo các bản dựng xác định:

  • (venv) $ python -m pip install 
    
    00 bằng cách sử dụng
    (venv) $ python -m pip install 
    
    13
  • (venv) $ python -m pip install 
    
    14 Sử dụng pipenv
  • (venv) $ python -m pip install 
    
    15 Sử dụng thơ

Các dự án tích hợp quy trình công việc môi trường ảo vào các tính năng của chúng nhưng vượt xa hơn điều đó cũng thường sẽ bao gồm các cách để tạo các tệp khóa cho phép các bản dựng xác định của môi trường của bạn.

Tránh môi trường ảo trong sản xuất

Bạn có thể tự hỏi làm thế nào để bao gồm và kích hoạt môi trường ảo của bạn khi triển khai một dự án để sản xuất. Trong hầu hết các trường hợp, bạn không muốn đưa thư mục môi trường ảo của mình vào các địa điểm trực tuyến từ xa:

  • GitHub: Don Tiết đẩy thư mục
    PS> venv\Scripts\activate
    (venv) PS>
    
    51 vào GitHub.
    Don’t push the
    PS> venv\Scripts\activate
    (venv) PS>
    
    51 folder to GitHub.
  • Các đường ống CI/CD: Don Tiết bao gồm thư mục môi trường ảo của bạn trong tích hợp liên tục hoặc đường ống phân phối liên tục của bạn. Don’t include your virtual environment folder in your continuous integration or continuous delivery pipelines.
  • Triển khai máy chủ: Don Tiết thiết lập một môi trường ảo trên máy chủ triển khai của bạn trừ khi bạn tự quản lý máy chủ đó và chạy nhiều dự án riêng biệt trên đó. Don’t set up a virtual environment on your deployment server unless you manage that server yourself and run multiple separate projects on it.

Bạn vẫn muốn môi trường bị cô lập và khả năng tái tạo cho các dự án mã của bạn. Bạn sẽ đạt được điều đó bằng cách ghim các phụ thuộc của bạn thay vì bao gồm thư mục môi trường ảo mà bạn đã làm việc với địa phương.

Hầu hết các nhà cung cấp dịch vụ lưu trữ từ xa, bao gồm các công cụ đường ống CI/CD và các nhà cung cấp dịch vụ nền tảng (PAAS), như Heroku hoặc Google App Engine (GAE), sẽ tự động tạo ra sự cô lập đó cho bạn.

Khi bạn đẩy dự án mã của mình đến một trong những dịch vụ được lưu trữ này, dịch vụ thường sẽ phân bổ một phần ảo của máy chủ cho ứng dụng của bạn. Các máy chủ ảo hóa như vậy là các môi trường bị cô lập theo thiết kế, điều đó có nghĩa là mã của bạn sẽ chạy trong môi trường riêng biệt theo mặc định.

Trong hầu hết các giải pháp được lưu trữ, bạn đã giành chiến thắng để đối phó với việc tạo ra sự cô lập, nhưng bạn vẫn cần cung cấp thông tin về những gì cần cài đặt trong môi trường từ xa. Đối với điều này, bạn sẽ thường sử dụng các phụ thuộc được ghim trong tệp

(venv) $ python -m pip install 
00 của bạn.

Hầu hết các nhà cung cấp nền tảng được lưu trữ cũng sẽ yêu cầu bạn tạo một tệp cài đặt cụ thể cho công cụ mà bạn đang làm việc. Tệp này sẽ bao gồm thông tin được ghi lại trong

(venv) $ python -m pip install 
00 nhưng nền tảng cần thiết lập một môi trường hoạt động cho mã của bạn. Bạn cần phải đọc lên các tệp cụ thể này trong tài liệu của dịch vụ lưu trữ mà bạn có kế hoạch sử dụng.

Một tùy chọn phổ biến đưa ảo hóa lên cấp độ tiếp theo và vẫn cho phép bạn tự tạo ra nhiều thiết lập là Docker.

Sử dụng các công cụ của bên thứ ba

Cộng đồng Python đã tạo ra nhiều công cụ bổ sung sử dụng môi trường ảo làm một trong những tính năng của họ và cho phép bạn quản lý nhiều môi trường ảo theo cách thân thiện với người dùng.

Bởi vì nhiều công cụ xuất hiện trong các cuộc thảo luận và hướng dẫn trực tuyến, bạn có thể tự hỏi mỗi người trong số chúng nói về cái gì và làm thế nào chúng có thể giúp bạn quản lý môi trường ảo của bạn.

Trong khi thảo luận về từng người trong số họ nằm ngoài phạm vi của hướng dẫn này, bạn sẽ nhận được một cái nhìn tổng quan về những dự án phổ biến tồn tại, những gì họ làm và nơi bạn có thể tìm hiểu thêm:

  • VirtualEnvWrapper là một phần mở rộng cho dự án VirtualEnv giúp tạo, xóa và quản lý môi trường ảo thấp hơn. Nó giữ tất cả các môi trường ảo của bạn ở một nơi, giới thiệu các lệnh CLI thân thiện với người dùng để quản lý và chuyển đổi giữa VirtualEnvs, và cũng có thể định cấu hình và có thể mở rộng.

    (venv) $ python -m pip install 
    
    19 là một cổng Windows của dự án này. is an extension to the virtualenv project that makes creating, deleting, and otherwise managing virtual environments lower effort. It keeps all your virtual environments in one place, introduces user-friendly CLI commands for managing and switching between virtualenvs, and is also configurable and extensible.
    (venv) $ python -m pip install 
    
    19 is a Windows port of this project.

  • Thơ là một công cụ để quản lý và đóng gói phụ thuộc Python. Với thơ, bạn có thể khai báo các gói mà dự án của bạn phụ thuộc vào, tương tự như

    (venv) $ python -m pip install 
    
    00 nhưng xác định. Thơ sau đó sẽ cài đặt các phụ thuộc này trong môi trường ảo được tạo tự động và giúp bạn quản lý môi trường ảo của mình. is a tool for Python dependency management and packaging. With Poetry, you can declare packages that your project depends on, similar to
    (venv) $ python -m pip install 
    
    00 but deterministic. Poetry will then install these dependencies in an auto-generated virtual environment and help you manage your virtual environment.

  • Pipenv nhằm mục đích cải thiện bao bì trong Python. Nó tạo và quản lý môi trường ảo cho các dự án của bạn bằng cách sử dụng

    (venv) PS> python -m pip install <package-name>
    
    82 ở phía sau. Giống như thơ, PipenV nhằm mục đích cải thiện quản lý phụ thuộc để cho phép các bản dựng xác định. Nó là một công cụ cấp cao tương đối chậm, đã được hỗ trợ bởi Cơ quan Bao bì Python (PYPA). aims to improve packaging in Python. It creates and manages virtual environments for your projects using
    (venv) PS> python -m pip install <package-name>
    
    82 in the back. Like Poetry, Pipenv aims to improve dependency management to allow for deterministic builds. It’s a relatively slow, high-level tool that has been supported by the Python Packaging Authority (PyPA).

  • PIPX cho phép bạn cài đặt các gói Python mà bạn thường chạy như các ứng dụng độc lập trong môi trường bị cô lập. Nó tạo ra một môi trường ảo cho mỗi công cụ và làm cho nó có thể truy cập toàn cầu. Ngoài việc giúp đỡ với các công cụ chất lượng mã như Black, Isort, Flake8, Pylint và MyPy, nó còn hữu ích trong việc cài đặt các phiên dịch viên Python thay thế, như Bpython, Ptpython hoặc Ipython. allows you to install Python packages that you’d habitually run as stand-alone applications in isolated environments. It creates a virtual environment for each tool and makes it globally accessible. Aside from helping with code quality tools such as black, isort, flake8, pylint, and mypy, it’s also useful for installing alternative Python interpreters, such as bpython, ptpython, or ipython.

  • PIPX-IN-PIPX là một trình bao bọc bạn có thể sử dụng để cài đặt PIPX đưa từ viết tắt đệ quy cho

    PS> venv\Scripts\activate
    (venv) PS>
    
    16 lên cấp độ tiếp theo bằng cách cho phép bạn cài đặt và quản lý PIPX bằng chính PIPX. is a wrapper you can use for installing pipx that takes the recursive acronym for
    PS> venv\Scripts\activate
    (venv) PS>
    
    16 to the next level by allowing you to install and manage pipx using pipx itself.

  • Pyenv không liên quan đến môi trường ảo, mặc dù nó thường được đề cập liên quan đến khái niệm này. Bạn có thể quản lý nhiều phiên bản Python với PyenV, cho phép bạn chuyển đổi giữa bản phát hành mới và phiên bản Python cũ mà bạn cần cho một dự án mà bạn đang làm việc. Pyenv cũng có một cổng Windows có tên PyenV-Win. isn’t inherently related to virtual environments, even though it’s often mentioned in relation to this concept. You can manage multiple Python versions with pyenv, which allows you to switch between a new release and an older Python version that you need for a project you’re working on. pyenv also has a Windows port called pyenv-win.

  • Pyenv-Virtualenv là một plugin cho PyenV kết hợp PyenV với Virtualenv, cho phép bạn tạo môi trường ảo cho các phiên bản Python do PyenV quản lý trên các hệ thống Unix. Có cả một plugin để trộn pyenv với VirtualEnvWrapper, được gọi là pyenv-virtualenvwrapper. is a plugin for pyenv that combines pyenv with virtualenv, allowing you to create virtual environments for the pyenv-managed Python versions on UNIX systems. There’s even a plugin to mix pyenv with virtualenvwrapper, called pyenv-virtualenvwrapper.

Cộng đồng Python đã xây dựng một loạt các dự án của bên thứ ba có thể giúp bạn quản lý môi trường ảo Python của bạn một cách thân thiện với người dùng.

Hãy nhớ rằng các dự án này có nghĩa là làm cho quá trình thuận tiện hơn cho bạn và aren cần thiết để làm việc với các môi trường ảo trong Python.

Sự kết luận

Xin chúc mừng đã thực hiện nó thông qua hướng dẫn này về môi trường ảo Python. Trong suốt hướng dẫn, bạn đã xây dựng một sự hiểu biết thấu đáo về môi trường ảo là gì, tại sao bạn cần chúng, cách chúng hoạt động nội bộ và cách bạn có thể quản lý chúng trên hệ thống của mình.

Trong hướng dẫn này, bạn đã học được cách:

  • Tạo và kích hoạt môi trường ảo Python and activate a Python virtual environment
  • Giải thích lý do tại sao bạn muốn cô lập các phụ thuộc bên ngoàiwhy you want to isolate external dependencies
  • Hình dung những gì Python làm khi bạn tạo ra một môi trường ảo when you create a virtual environment
  • Tùy chỉnh môi trường ảo của bạn bằng cách sử dụng các đối số tùy chọn cho
    PS> venv\Scripts\activate
    (venv) PS>
    
    12
    your virtual environments using optional arguments to
    PS> venv\Scripts\activate
    (venv) PS>
    
    12
  • Vô hiệu hóa và loại bỏ môi trường ảo and remove virtual environments
  • Chọn các công cụ bổ sung để quản lý các phiên bản Python và môi trường ảo của bạnadditional tools for managing your Python versions and virtual environments

Lần tới, một hướng dẫn bảo bạn tạo và kích hoạt môi trường ảo, bạn sẽ hiểu rõ hơn về lý do tại sao lại là một gợi ý tốt và những gì Python làm cho bạn đằng sau hậu trường.

Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Làm việc với môi trường ảo Python This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Working With Python Virtual Environments

Làm cách nào để kiểm tra môi trường ảo của tôi bằng Python?

VirtualEnv là dự án độc lập hoạt động trên bất kỳ phiên bản Python nào (github.com/pypa/virtualenv).....
Một cách hay để phát hiện từ bash bằng câu trả lời này là để chạy: env | grep virtual_env | wc -l sẽ trả về 1 nếu trong một venv hoặc 0 nếu không ..

Làm cách nào để mở cửa sổ Môi trường Python?

Để mở cửa sổ Môi trường Python: Chọn Chế độ xem> Các Windows khác> Lệnh menu Môi trường Python.Nhấp chuột phải vào nút Môi trường Python cho một dự án trong Giải pháp Explorer và chọn Xem tất cả các môi trường Python.Select the View > Other Windows > Python Environments menu command. Right-click the Python Environments node for a project in Solution Explorer and select View All Python Environments.

Làm cách nào để kích hoạt môi trường Python?

Outline..
Mở một thiết bị đầu cuối ..
Thiết lập trình quản lý gói PIP ..
Cài đặt gói VirtualEnv ..
Tạo môi trường ảo ..
Kích hoạt môi trường ảo ..
Vô hiệu hóa môi trường ảo ..
Tùy chọn: Làm cho môi trường ảo thành con trăn mặc định của bạn ..
Thêm: Tài liệu Virtualenv của Python ..