cuốn sách gpt4 ai đã làm

Môi trường ảo Python: phân tích nguyên tắc và các phương pháp hay nhất

In lại Tác giả: Sahara Thời gian cập nhật: 2025-01-01 22:40:57 58 4
mua khóa gpt4 Nike

Bắt đầu với một vấn đề nan giải

Tiểu Vương được phát triển dựa trên năm dựa trên TensorFlow 1.x; ở đây, yêu cầu tính năng mới của TensorFlow 2. x. công việc này không chỉ nhạt mà còn thường xuyên dẫn đến sai sót.

"Không có cách nào để mỗi dự án sử dụng môi trường Python chuyên dụng của riêng mình?" Xiao Wang đã nêu câu hỏi này tại tham gia dự án nhóm.

Trên thực tế, vấn đề này đã được giải pháp hoàn thiện trong cộng đồng Python: môi trường ảo (Môi trường ảo) ngày nay, chúng ta cũng tìm thấy chúng. Hiểu một cách toàn diện về môi trường Virtual Python từ nguyên tắc đến thực tiễn.

Bản chất của môi trường ảo

Khi bạn cài đặt Python trên hệ thống của mình, bạn sẽ nhận được:

  1. Trình thông dịch Python: chương trình cam kết thực thi mã Python
  2. Chuẩn thư viện: Các thư viện tích hợp của Python, như hạn chế hệ điều hành,hệ thống Chờ đợi
  3. site-packages: thư mục cài đặt các gói của bên thứ ba

Khi chúng tôi thực hiện lệnh python, hệ thống sẽ:

nhập sys print(sys.path)

Danh sách đường dẫn này được xác định rõ ràng nơi mô-đun đầu vào Python.

Trên thực tế, môi trường ảo không phải là bản sao hoàn chỉnh của Python mà tạo ra một môi trường thư mục độc lập trong đó:

  1. thùng/ hoặc bản/(Windows) folder chứa biểu tượng liên kết đến Python thông dịch
  2. lib/gói-trang web/ Các gói lưu trữ bên trong thư mục cho môi trường này
  3. pyvenv.cfg Cấu hình thông tin môi trường lưu trữ tệp

Vui lòng tạo một môi trường ảo để xác thực:

python -m venv my_project_env

Xem thư mục cấu hình được tạo:

my_project_env/ ├── bin/ # System Unix │ ├── python # Liên kết biểu tượng đặc trưng của hệ thống Python │ ├── pip │ └── kích hoạt # Kích hoạt tập lệnh ├── lib/ │ └── python3.x/ │ └─ ─ gói trang web/ └── pyvenv.cfg #Cấu hình tập tin

Khi chúng tôi kích hoạt môi trường ảo:

# Nguồn hệ thống Unix my_project_env/bin/activate # Windows .\my_project_env\Scripts\activate

Kích hoạt lệnh sẽ sửa đổi các môi trường biến, yếu tố chủ yếu là:

  1. On re CÔN ĐƯỜNG, tạo môi trường ảo cái thùng Thư mục đầu tiên
  2. On re PYTHON_PATH
  3. Thêm môi trường định nghĩa mã hóa (trường tên trước lệnh nhắc)

PYTHON_PATH chỉ định các plugin thư mục có thể chứa các mô-đun mà bạn muốn Python có thể truy cập.

venv vs conda: so sánh chuyên sâu

Nhắc đến môi trường ảo, nhiều người sẽ hỏi: "venv và conda có gì khác nhau? Tôi nên dùng cái nào?".

Hãy so sánh với một ví dụ cụ thể.

Sử dụng venv:

python -m venv ds_project nguồn ds_project/bin/kích hoạt pip cài đặt numpy pandas scikit-learn

Sử dụng conda:

conda tạo -n ds_project python=3.8 conda kích hoạt ds_project conda cài đặt numpy pandas scikit-learn

Nhìn bề ngoài, cả hai đều rất giống nhau, nhưng trên thực tế có những cơ bản khác biệt:

  1. Cài đặt mức độ.

    • venv Chỉ cách các gói Python
    • chung Có thể thiết lập mọi phần phụ thuộc (bao gồm thư viện C, hệ thống gói)
  2. Phiên bản Python.

    • venv Sử dụng phiên bản Python khi môi trường được tạo
    • chung Bạn có thể chỉ định tùy chọn Python phiên bản
  3. Quản lý gói.

    • venv Cài đặt gói từ PyPI bằng pip
    • chung Sử dụng gói quản lý hệ thống riêng của bạn để xử lý các phần phụ thuộc phức tạp

Tuy nhiên, sẽ thuận tiện hơn khi phát triển dựa trên venv, vì nó đi kèm với python và không yêu cầu cài đặt bổ sung, trong khi conda yêu plug-in install plug-in.

Bắt đầu lại từ đầu: venv đang hoạt động

Hãy yên tâm sử dụng venv thông qua một dự án thực tế. cần sử dụng các yêu cầu và beautifulsoup4.

Tạo và kích hoạt

Đầu tiên, hãy chọn một thư mục phù hợp:

mkdir web_scraper cd web_scraper python -m venv .venv # Thông thường sử dụng .venv làm tên môi trường thư mục ảo

Môi trường kích hoạt:

# Nguồn Unix/macOS .venv/bin/activate # Windows .\.venv\Scripts\activate

Sau khi kích hoạt, lệnh command sẽ trở thành:

(.venv) $ 

Cài đặt gói phụ thuộc

Bây giờ chúng tôi có thể cài đặt các gói cần thiết cho dự án:

yêu cầu cài đặt pip beautifulsoup4

Điều đáng chú ý là tại thời điểm này, danh sách pip sẽ chỉ hiển thị các gói trong môi trường này, điều này rất mới Tôi:

Phiên bản gói ------------ ------- beautifulsoup4 4.9.3 request 2.26.0 pip 21.3.1 setuptools 58.1.0

Quản lý thuộc tính phụ

Để thuận tiện cho việc chia sẻ và phát triển dự án, chúng tôi nên xuất bản danh sách phụ thuộc:

đóng băng pip > request.txt

Các thành viên khác trong nhóm có thể khôi phục môi trường trực tiếp thông qua tệp này:

cài đặt pip -r require.txt

Hiểu sâu hơn: hoạt động bên trong của môi trường ảo

Cơ chế tìm kiếm đường dẫn Python

Hãy viết một chương trình nhỏ để quan sát cách môi trường ảo thay đổi đường dẫn tìm kiếm mô-đun của Python:

# check_paths.py import sys import os def print_paths(): print("Pythonexecutable:", sys.executable) print("\nPython path:") cho đường dẫn trong sys.path: print(f" - {path}" ) print("\nBiến môi trường:") print(f" PYTHONPATH: {os.environ.get('PYTHONPATH', 'Không set')}") print(f" VIRTUAL_ENV: {os.environ.get('VIRTUAL_ENV', 'Not set')}") if __name__ == '__main__': print_paths()

Chạy tập lệnh này trước và sau khi kích hoạt môi trường ảo và bạn sẽ nhận thấy những điểm khác biệt chính:

  1. sys.executable Trỏ tới trình thông dịch Python trong môi trường ảo
  2. sys.path Đầu tiên tìm kiếm môi trường ảo gói trang web
  3. VIRTUAL_ENV các biến môi trường được thiết lập

Cơ chế nhập gói

Môi trường ảo thực hiện cách ly gói bằng cách sửa đổi sys.path. Khi Python nhập một mô-đun, nó sẽ tìm kiếm theo thứ tự sau:

  1. thư mục hiện tại
  2. PYTHONPATH thư mục trong các biến môi trường
  3. Thư mục thư viện chuẩn
  4. gói trang web Mục lục

Trong môi trường ảo, thứ tự tìm kiếm này được sửa đổi một cách tinh tế để các gói trang web của môi trường ảo được ưu tiên hơn các thư mục của hệ thống.

Chìa khóa để cô lập: liên kết tượng trưng

Hãy xem trình thông dịch Python trong môi trường ảo:

nhập os print(os.path.realpath(sys.executable))

Bạn sẽ thấy rằng đó thực sự là một liên kết tượng trưng trỏ đến trình thông dịch Python trong hệ thống của bạn. Điều này giải thích tại sao môi trường ảo lại nhẹ đến vậy: nó sử dụng lại trình thông dịch Python và thư viện chuẩn của hệ thống, đồng thời chỉ cách ly các gói của bên thứ ba.

Những cạm bẫy và giải pháp thường gặp

1. Các vấn đề liên quan đến đường dẫn

Vấn đề phổ biến nhất là không thể tìm thấy các gói đã cài đặt. Thường có hai lý do:

# Kiểm tra môi trường Python hiện tại import sys import site print(f"Python version: {sys.version}") print(f"Python path: {sys.executable}") print(f"site-packages: {site.getsitepackages ( )}")

Giải thích:

  • Đảm bảo môi trường ảo được kích hoạt đúng cách
  • nghiên cứu PYTHONPATH Có chứa các đường dẫn xung đột hay không

2. Cấu hình IDE

Lấy VSCode làm ví dụ, cấu hình môi trường ảo một cách chính xác:

  1. Mở bảng lệnh (Ctrl+Shift+P)
  2. Nhập "Python: Chọn Trình thông dịch"
  3. Chọn trình thông dịch Python cho môi trường ảo

Tạo .vscode/settings.json:

{ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python", "python.analysis.extraPaths": [ "${workspaceFolder}/src" ] }

Ứng dụng nâng cao

virtualenvwrapper: một công cụ quản lý thân thiện hơn

Mặc dù venv là đủ nhưng nó có thể không thuận tiện khi quản lý nhiều dự án. virtualenvwrapper cung cấp các lệnh thân thiện hơn:

# Cài đặt pip install virtualenvwrapper # Cấu hình Unix/macOS (thêm vào .bashrc hoặc .zshrc) xuất WORKON_HOME=$HOME/.virtualenvs xuất PROJECT_HOME=$HOME/projects source /usr/local/bin/virtualenvwrapper.sh

Các lệnh chính:

mkvirtualenv my_project # Tắt môi trường # Tắt môi trường rmvirtualenv my_project # Xóa môi trường

Công cụ hiện đại: pipenv và thơ

pipenv: kết hợp pip và virtualenv

pipenv use Pipfile thay vì require.txt, cung cấp cơ chế khóa phụ thuộc tốt hơn:

# Cài đặt pip install pipenv # Tạo dự án cài đặt pipenv # Cài đặt gói yêu cầu cài đặt pipenv # Nhập môi trường pipenv shell

Ví dụ về tệp Pip:

[[nguồn]] url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [gói] request = "*" pandas = ">=1.3.0" [dev-packages] pytest = "*" black = "*" [ yêu cầu] python_version = "3.8"

thơ: quản lý phụ thuộc hiện đại hơn

Thơ cung cấp các chức năng quản lý dự án hoàn chỉnh hơn:

#Cài đặt Curl -sSL https://install.python-poetry.org | python3 - #Tạo dự án mới thơ mới my_project #Cài đặt thuộc thơ cài đặt #Thêm phụ thuộc thơ thêm yêu cầu #Kích hoạt vỏ thơ

ví dụ về pyproject.toml:

[tool.poetry] name = "my_project" version = "0.1.0" description = "" tác giả = ["Tên của bạn "] [tool.poetry.dependency] python = "^3.8 " request = "^2.28.0" [tool.poetry.dev-dependency] pytest = "^7.1.0" [build-system] yêu cầu = [" thơ-core>=1.0.0"] build-backend = "poetry.core.masonry.api"

Môi trường phát triển khai và sản xuất

Môi trường ảo trong Docker

Môi trường ảo vẫn hữu ích khi phát triển với vùng chứa:

TỪ python:3.8-slim WORKDIR /app # Tạo môi trường ảo CHẠY python -m venv /opt/venv # Use môi trường ảo ENV PATH="/opt/venv/bin:$PATH" COPY require.txt . request SAO CHÉP CMD ["python", "app.py"]

CI/CD cấu hình

Lấy Action GitHub làm ví dụ:

tên: Python CI trên: [đẩy] công việc: build: chạy-on: ubuntu-bước mới nhất: - use: actions/checkout@v2 - tên: Cài đặt Python use: actions/setup-python@v2 với: python-version : '3.8' - tên: Tạo venv run: | python -m venv .venv source .venv/bin/activate - tên: Cài đặt phụ thuộc: | pip install - r request.txt - tên: Chạy thử nghiệm thử nghiệm pytest/

Tóm tắt thực tiễn tốt nhất

  1. Xuất dự kiến ​​trúc cấu hình:
my_project/ ├── .venv/ ├── src/ │ └── my_project/ │ ├── __init__.py │ └── main.py ├── test/ ├── .gitignore ├── pyproject.toml # hoặc yêu cầu cầu.txt └── README.md
  1. Khuyến nghị quản lý môi trường:

    • Tất cả các dự án đều sử dụng môi trường ảo
    • Sẽ .venv tham gia vào .gitignore
    • sử dụng request.txt hoặc một công cụ quản lý phụ thuộc hiện đại hơn
    • Chỉ định rõ các phiên bản phụ thuộc
  2. ví dụ .gitignore:

# Môi trường Virtual.venv/ venv/ ENV/ # Python __pycache__/ *.py[cod] *$py.class # Phân phối gói dist/ build/ *.egg-info/
  1. Kiểm tra dấu nhắc Kiểm soát phiên bản:
    • Khóa thuộc tính phiên bản
    • Thường xuyên cập nhật các phần phụ thuộc và kiểm tra các vấn đề bảo mật
    • sử dụng biên dịch pip hoặc thơ.lock Đảm bảo các phần phụ thuộc có thể tái tạo

Phần kết luận

Môi trường Virtual Python là một công cụ mạnh mẽ không chỉ giải quyết vấn đề quản lý phụ thuộc mà còn cung cấp khả năng cách lý tưởng cho dự án. vẫn giữ nguyên: cung cấp môi trường Python độc lập, có thể kiểm soát và tái tạo cho từng dự án.

Cho dù bạn chọn tùy chọn nào, việc hiểu cách hoạt động của môi trường ảo sẽ giúp bạn xử lý tốt hơn các vấn đề đề quản lý các phần phụ thuộc và viết các dự án Python dễ bảo trì hơn.

bạn Muốn biết thêm về môi trường Virtual Python: phân tích nguyên tắc và các phương pháp hay nhất, vui lòng tìm kiếm các bài viết CFSDN hoặc Tiếp tục duyệt các bài viết liên quan. Sẽ hỗ trợ blog của tôi trong tương lai!

58 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress