Tạo môi trường ảo Python

Tìm hiểu cách tạo môi trường ảo bằng Python và sử dụng tệp lệnh tests.txt để cài đặt phần phụ thuộc

Ảnh của Michael Dziedzic trên Unsplash

Trong Python, môi trường ảo là một môi trường biệt lập để chạy các chương trình Python của bạn. Sử dụng môi trường ảo cho phép chương trình của bạn có các phụ thuộc riêng (các phiên bản khác nhau của gói). Ví dụ: Chương trình A sử dụng một phiên bản cụ thể của packageX, trong khi Chương trình B sử dụng phiên bản cũ hơn của packageX. Đây là vấn đề trực quan:

Hình ảnh của tác giả

Nếu bạn đặt hai chương trình vào cùng một môi trường mặc định, bạn sẽ gặp sự cố với packageX - nếu bạn cố gắng cài đặt một phiên bản cụ thể của packageX, nó sẽ ghi đè lên phiên bản khác.

Một giải pháp tốt hơn là tạo hai môi trường biệt lập— còn gọi là môi trường ảo . Mỗi môi trường ảo sau đó sẽ lưu trữ các phiên bản cụ thể của packageX mà mỗi chương trình cần, như sau:

Hình ảnh của tác giả

Trong bài viết này, tôi sẽ chỉ cho bạn cách bạn có thể tạo môi trường ảo bằng trình quản lý gói conda . Ngoài ra, tôi cũng sẽ chỉ cho bạn cách bạn có thể lấy danh sách các gói mà bạn đã cài đặt trong môi trường của mình (thông qua piplệnh) và thực hiện cài đặt tương tự trên một môi trường ảo khác bằng cách sử dụng requirements.txttệp.

C onda là một gói mã nguồn mở và hệ thống quản lý môi trường chạy trên Windows, Mac OS và Linux.

Bài viết này giả định rằng bạn có Anaconda (https://www.anaconda.com/products/individual-d) được cài đặt trên máy tính của bạn.

Tạo một môi trường ảo mới

Để tạo một môi trường ảo mới, hãy sử dụng condalệnh với các tùy chọn sau:

conda create --name Project1 python=3.9

Xem danh sách môi trường ảo

Khi môi trường ảo được tạo, bạn có thể xem danh sách các môi trường ảo mà bạn có trên máy tính của mình bằng lệnh sau:

conda info --envs

(base) weimenglee@Wei-Mengs-Mini ~ % conda info --envs
# conda environments:
#
base                *  /Users/weimenglee/miniforge3
Project1               /Users/weimenglee/miniforge3/envs/Project1

Với môi trường ảo mới được tạo, đã đến lúc kích hoạt nó:

(base) weimenglee@Wei-Mengs-Mini ~ % conda activate Project1
(Project1) weimenglee@Wei-Mengs-Mini ~ %

(Project1) weimenglee@Wei-Mengs-Mini ~ %

Để biết các gói hiện được cài đặt trong môi trường ảo của bạn là gì, hãy sử dụng pip freezelệnh:

(Project1) weimenglee@Wei-Mengs-Mini ~ % pip freeze

certifi==2021.5.30

certifi==2021.5.30
chardet @ file:///Users/runner/miniforge3/conda-bld/chardet_1610093454858/work

pip list --format=freeze

<package_name>==<version_number>

Bây giờ chúng ta hãy thử cài đặt một số gói bổ sung trong môi trường ảo Project1 của chúng ta bằng pip installlệnh:

(Project1) weimenglee@Wei-Mengs-Mini ~ % pip install pandas numpy matplotlib

  • Gấu trúc
  • NumPy
  • Matplotlib

(Project1) weimenglee@Wei-Mengs-Mini ~ % pip freeze
certifi==2021.5.30
cycler==0.10.0
kiwisolver==1.3.2
matplotlib==3.4.3
numpy==1.21.2
pandas==1.3.2
Pillow==8.3.2
pyparsing==2.4.7
python-dateutil==2.8.2
pytz==2021.1
six==1.16.0

(Project1) weimenglee@Wei-Mengs-Mini ~ % pip freeze > requirements.txt

K ey takeaway - bất kỳ gói nào bạn cài đặt trong môi trường ảo này vẫn ở trong môi trường ảo này. Nó sẽ không xung đột với các gói tương tự khác mà bạn cài đặt trong môi trường ảo khác.

Thử nghiệm môi trường mới

Bây giờ bạn có thể kiểm tra xem môi trường có hoạt động chính xác hay không. Nhập lệnh sau để khởi động trình thông dịch Python:

(Project1) weimenglee@Wei-Mengs-Mini ~ % python

>>> import pandas
>>> print(pandas.__version__)

      

Nhập exit()để thoát khỏi trình thông dịch Python.

Hủy kích hoạt môi trường

Khi bạn hoàn thành với môi trường, bạn có thể sử dụng conda deactivate lệnh để đưa bạn trở lại môi trường cơ sở:

(Project1) weimenglee@Wei-Mengs-Mini ~ % conda deactivate

Sau khi bạn hoàn thành dự án của mình và không cần môi trường nữa, bạn có thể xóa môi trường bằng lệnh sau:

(base) weimenglee@Wei-Mengs-Mini ~ % conda env remove --name Project1
Remove all packages in environment /Users/weimenglee/miniforge3/envs/Project1:

Bây giờ hãy tạo một môi trường ảo khác và gọi nó, chẳng hạn như Project2 :

(base) weimenglee@Wei-Mengs-Mini ~ % conda create --name Project2 python=3.9

(base) weimenglee@Wei-Mengs-Mini ~ % conda activate Project2
(Project2) weimenglee@Wei-Mengs-Mini ~ %

(Project2) weimenglee@Wei-Mengs-Mini ~ % python
Python 3.9.6 (default, Aug 16 2021, 12:43:27)
[Clang 12.0.0 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pandas'
>>> exit()

(Project2) weimenglee@Wei-Mengs-Mini ~ % pip install -r requirements.txt
Requirement already satisfied: certifi==2021.5.30 in ./miniforge3/envs/Project2/lib/python3.9/site-packages (from -r requirements.txt (line 1)) (2021.5.30)
Collecting cycler==0.10.0
...
Collecting matplotlib==3.4.3
Using cached matplotlib-3.4.3-cp39-cp39-macosx_11_0_arm64.whl
Collecting numpy==1.21.2
Using cached numpy-1.21.2-cp39-cp39-macosx_11_0_arm64.whl (12.4 MB)
Collecting pandas==1.3.2
Using cached pandas-1.3.2-cp39-cp39-macosx_11_0_arm64.whl
...
Installing collected packages: six, pytz, python-dateutil, pyparsing, Pillow, numpy, kiwisolver, cycler, pandas, matplotlib
Successfully installed Pillow-8.3.2 cycler-0.10.0 kiwisolver-1.3.2 matplotlib-3.4.3 numpy-1.21.2 pandas-1.3.2 pyparsing-2.4.7 python-dateutil-2.8.2 pytz-2021.1 six-1.16.0

Kết luận

Sử dụng requirements.txttệp là một cách tốt để chỉ định các phụ thuộc của chương trình Python của bạn. Trong tệp này, bạn đặt tất cả các tên gói (cũng như số phiên bản cụ thể của chúng) mà ứng dụng của bạn cần để bất kỳ ai chạy chương trình của bạn chỉ cần thực hiện pip installbằng cách sử dụng requirements.txttệp.

Suggested posts

Môi trường ảo Python: Tại sao, Cái gì và Như thế nào.

Môi trường ảo Python: Tại sao, Cái gì và Như thế nào.

Nhận thông tin chi tiết phù hợp về các phương pháp hay nhất trong quy trình lập trình Python. “Nguyên tắc đầu tiên là bạn không được tự lừa dối mình và bạn là người dễ bị lừa nhất” – Richard Feynman.

Môi trường và thư viện ảo Python

Môi trường và thư viện ảo Python

Một trong những phần quan trọng nhất của quá trình phát triển python là môi trường và thư viện ảo. Bạn có thể hỏi: môi trường ảo chính xác là gì và tại sao chúng ta cần chúng? Bài đăng này sẽ giải thích cho bạn biết thư viện là gì, tại sao chúng tôi sử dụng và cách bạn có thể sử dụng chúng cho các dự án của riêng mình.

Related posts

Suy nghĩ lại về truyền thông: Năm sự thật của McChesney và tương lai của truyền thông

Trong thế giới siêu kết nối ngày nay, các hệ thống truyền thông đóng một vai trò then chốt trong việc định hình dư luận và do đó, trong việc ra quyết định dân chủ. Trong phân tích sâu sắc của mình về nền kinh tế chính trị của truyền thông, học giả Robert McChesney thách thức sự hiểu biết thông thường và trình bày cái mà ông gọi là “năm sự thật” về truyền thông.

Cách cứu hành tinh và kiếm tiền

Cách cứu hành tinh và kiếm tiền

Đã bao nhiêu lần bạn vứt bỏ chai nhựa, lọ thủy tinh, lon nhôm hay gói năng lượng xanh mà không cần suy nghĩ kỹ? Đã bao nhiêu lần bạn ước mình có thể nhận được thứ gì đó để đổi lại việc tái chế chúng? Nếu bạn giống như hầu hết mọi người, câu trả lời có lẽ là nhiều lần. Tái chế thường được coi là một rắc rối, một công việc vặt hoặc một nhiệm vụ không mang lại bất kỳ lợi ích tức thời hoặc hữu hình nào.

Theo Dõi Bất Cứ Ai Chỉ Bằng Số Điện Thoại | Điều tra OSINT

Theo Dõi Bất Cứ Ai Chỉ Bằng Số Điện Thoại | Điều tra OSINT

Bạn có thể là Điều tra viên OSINT, Người chơi CTF hoặc đơn giản là người nhận được các cuộc gọi spam. Ai đó đang cố xác minh số bạn đã thấy trong quảng cáo.

Thu thập OSINT để săn lùng mối đe dọa

Thu thập OSINT để săn lùng mối đe dọa

Xin chào, những người đam mê mạng! Chào mừng bạn quay trở lại OSINT cho loạt bài săn tìm mối đe dọa. Trong bài viết đầu tiên, tôi đã cung cấp cho bạn cái nhìn tổng quan về OSINT và tầm quan trọng của nó trong việc tìm kiếm mối đe dọa.