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ừ 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:
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ừ 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, 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 16, tốt nhất là bạn nên tạo một môi trường ảo:
Nếu bạn sử dụng Python trên Windows và bạn đã định cấu hình các biến 17 và 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 19.Nhiều hệ điều hành Linux vận chuyển với phiên bản Python 3. Nếu 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ụ 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 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 23 thay vì 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 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:
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 17 và 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 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ụ 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 20 trong các khối mã bằng số phiên bản cụ thể của bạn.
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 16. Vì lần đầu tiên bạn tạo và kích hoạt môi trường ảo, 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 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ó:
Sau khi thực thi lệnh 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 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ì 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à 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:
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 39:
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 đó.
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 đó.
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: 34 chỉ nên chứa các mô -đun được viết bằng mã Python thuần túy. 35 nên chứa các nhị phân được viết bằng Python thuần túy, ví dụ 36, 37 hoặc 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:
0Nế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:
1 2Nế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.
Một dự án cào web với súp đẹp
3 4Nế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.
5 6Nế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ụcKhi bạn tạo một môi trường ảo mới bằng mô-đun 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 46 để hiển thị tất cả các nội dung của thư mục:
Trước tiên bạn có thể cần cài đặt 46, ví dụ với 48.Lệnh 46 hiển thị nội dung của thư mục 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 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 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:
7 8 9Trước tiên bạn có thể cần cài đặt 46, ví dụ với 48.
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:
Các gói được cài đặt bên trong 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, 12 sẽ cài đặt cả 16 và setuptools. Sử dụng 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 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 16.Bạn có thể kiểm tra kỹ Python đó đã cài đặt cả 16 và setuptools vào môi trường ảo của bạn bằng cách sử dụng 10:
0 1Số 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 33:
Cuối cùng, cũng có một tập tin có tên 19. Tệp này giúp đặt mức ưu tiên đường dẫn cho nhập khẩu 14 và hoạt động cùng với 21 để đảm bảo rằng Python thích phiên bản của 14 đi kèm với setuptools trên tệp tích hợp. 19. This file helps set the path precedence for 14 imports and works together with 21 to ensure that
Python prefers the version of 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 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ậpMô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:
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ì 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 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:
2 3 4Bạ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: >>> 5Trong đoạn mã ví dụ ở trên, bạn đã nhập thành công cả mô -đun 27 và phím tắt 28 từ mô -đun in đẹp. Sau đó, bạn đã sử dụng 29 để kiểm tra mô -đun 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:
6 7hệ đ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?
8 9 0Bạ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ả 12.Thay vì tìm kiếm mô -đun 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 62. Nếu trình thông dịch tìm thấy tệp này và nó chứa khóa 40, thì trình thông dịch sẽ sử dụng phím đó để đặt giá trị cho hai biến:
Nếu trình thông dịch không tìm thấy tệp 62, thì nó sẽ xác định rằng nó không chạy trong môi trường ảo và cả 47 và 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:
>>> 1>>> 2>>> 3Bạ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ã:
>>> 4>>> 5>>> 6Bạ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ã:
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.
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, 12 chỉ sao chép các tệp cần thiết tối thiểu:
7 8 9>>>
0 1 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ã:
>>> 3>>> 4>>> 5Bạ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ả 50 và 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:
>>> 6>>> 7>>> 8Lư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 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:
>>> 9>>> 0>>> 1Python đã 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:
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ừ đó.
4 5 6Python đã 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.
Để 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.
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:
7 8 9Python đã 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:
0 1 2Lệ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 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 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ể:
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 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 00 bên ngoài mà bạn đã cài đặt trong môi trường ảo: 3Bạ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 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ệnhBạ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:
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:
4 5Nế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 05:
6 7Nế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 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ố 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:
8 9Trong 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 16 để cài đặt 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 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 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 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 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 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 09:
0 1Trong 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 16 để cài đặt 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 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 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.
2 3 4Trong 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 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 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 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 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 |