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

Quản lý gói Python không còn là vấn đề đau đầu: bắt đầu nhanh chóng với các công cụ uv

In lại Tác giả: Sahara Thời gian cập nhật: 27-12-2024 14:51:42 58 4
mua khóa gpt4 Nike

Có nhiều công cụ trong hệ sinh thái quản lý gói Python, chẳng hạn như pip, pip-tools, thơ, conda, v.v., mỗi công cụ có một số chức năng nhất định.

UV được giới thiệu hôm nay là một công cụ quản lý gói Python dựa trên Rust do Astral đưa ra, nhằm mục đích trở thành "Cargo of Python".

Nó cung cấp trải nghiệm quản lý gói nhanh chóng, đáng tin cậy và dễ sử dụng với hiệu suất, khả năng tương thích và chức năng tuyệt vời, mang đến các tùy chọn mới cho việc phát triển và quản lý các dự án Python.

1. Tại sao nên sử dụng tia cực tím

So với các công cụ quản lý gói khác trong Python, uv có nhiều ưu điểm hơn:

  1. nhanh: Hưởng lợi từrỉ sét,tia cực tímTốc độ của công cụ này thật đáng kinh ngạc. Ví dụ: cài đặt các phần phụ thuộc nhanh hơn nhiều so với các công cụ khác.
  2. Chức năng toàn diện:tia cực tím Đúng"Dịch vụ một cửa"Các công cụ từ cài đặt Python, quản lý môi trường ảo đến cài đặt và quản lý các gói, đến quản lý các phần phụ thuộc của dự án, nó đều có thể xử lý rất tốt mọi thứ
  3. Tương lai tươi sáng: Có những công ty đầu tư mạo hiểm đằng sau nóTinh túĐược hỗ trợ và thông quaMITCấp phép nên ngay cả khi có vấn đề phát sinh trong tương lai, cộng đồng vẫn có cách giải quyết

Sử dụng uv, bạn cũng có thể quản lý các phần phụ thuộc một cách thuận tiện như các dự án NodeJS hoặc Rust.

2. Cách cài đặt

Việc cài đặt uv rất đơn giản. Bạn có thể sử dụng tập lệnh cài đặt chính thức hoặc cài đặt thông qua pip.

# Trên macOS và Linux -LsSf https://astral.sh/uv/install.sh | Trên Windows. powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" # With pip install uv.

Sau khi cài đặt, bạn có thể kiểm tra xem quá trình cài đặt có thành công hay không qua trợ giúp uv thông tin:

3. Cách sử dụng

Phần sau đây trình bày cách sử dụng uv để quản lý các dự án Python.

Trước khi sử dụng uv, việc tạo một dự án Python đối với tôi chỉ là tạo một thư mục.

Vui lòng sửa cho tôi bất kỳ thiếu sót hoặc sai sót nào!

Tiếp theo, hãy bắt đầu bằng cách tạo một dự án để trình bày một số chức năng tôi thường sử dụng khi sử dụng sử dụng tia cực tím.

Đầu tiên, hãy giới thiệu hai tệp được sử dụng chủ yếu bởi các công cụ uv:

  • pyproject.toml: Python Version và other information
  • uv.lock: Ghi lại tất cả các phần phụ thuộc của dự án, bao gồm tất cả các phần phụ thuộc và nền tảng khác để đảm bảo tính nhất quán của quá trình cài đặt trong các môi trường khác nhau. tia cực tím Quản lý tự động, không chỉnh sửa thủ công

3.1.

Tiếp theo, tạo một dự án và sử dụng lệnh uv init .

$ uv init myproject Dự án đã khởi tạo `myproject` tại `D:\projects\python\myproject` $ cd .\myproject\ $ ls Thư mục: D:\projects\python\myproject Mode LastWriteTime Tên dài --- - ---- --------- ------ ---- -Một---- 27/12/2024 12:06:08 109 .gitignore -a---- 2024/12/27 12:06:08 5 .python-version -a---- 2024/12/27 12:06:08 87 hello.py -a---- 27/12/2024 12:06: 08 155 pyproject.toml -a---- 27/12/2024 12:06:08 0 README.md

Sau khi tạo dự án thông qua init, công cụ uv đã giúp chúng tôi tạo một số tệp mặc định theo cách chug.

Trong số đó, hello.py chỉ là một đoạn mã để trình diễn.

Sau đó, chúng tôi có thể xóa tệp mã hóa này và thay thế bằng mã thực tế của riêng mình theo nhu cầu thực tế của dự án.

$ cat .\hello.py def main(): print("Xin chào từ dự án của tôi!") if __name__ == "__main__": main()

Có một số dự án thông tin trong pyproject.toml:

$ cat .\pyproject.toml [project] name = "myproject" version = "0.1.0" description = "Thêm mô tả của bạn vào đây" readme = "README.md" require-python = ">=3.12" dependency =[]

Git.

3.2. Môi trường hoạt động

Sau khi tạo dự án, điều đầu tiên họ làm khi vào thư mục gốc của dự án là đồng bộ hóa các thành phần phụ thuộc của dự án MỘT.

$ uv sync Sử dụng trình dịch CPython 3.12.4 tại: D:\miniconda3\envs\databook\python.exe Gói trong 15ms được kiểm tra trong 0,05 mili giây

Sau khi đồng bộ hóa, phiên bản thích hợp của Python sẽ tự động được tìm thấy hoặc tải xuống môi trường ảo của dự án dự án sẽ được tạo và cài đặt, đồng thời một danh sách phụ thuộc sẽ được xây dựng và ghi lại.

uv.lock và cuối cùng là đồng bộ hóa các phần phụ thuộc vào môi trường ảo.

Dự án của chúng tôi là một dự án mới được tạo và không có sự phụ thuộc nào, vì nội dung trong tệp uv.lock tương thích đối đơn giản.

$ ls Thư mục: D:\projects\python\myproject Mode LastWriteTime Tên dài ---- ------------- tốc độ ------ ---- d---- -- 27/12/2024 12:12:39 .venv -a---- 2024/12/27 12:06:08 109 .gitignore -a---- 2024/12/27 12:06:08 5 .python-version -a---- 2024/12/27 12:06:08 87 hello.py -a---- 2024/12/27 12:06: 08 155 pyproject.toml -a--- - 27/12/2024 12:06:08 0 README.md -a---- 2024/12/27 12:12:39 116 uv.lock $ cat .\uv.lock version = 1 require-python = ">=3.12" [[gói]] name = " myproject" phiên bản = "0.1.0" nguồn = { ảo = "." }

Sau khi đồng bộ hóa uv được đồng bộ hóa, bạn có thể chạy dự án mã hóa.

Vì chúng tôi sử dụng uv để quản lý dự án nên chúng tôi sẽ sử dụng lệnh uv để chạy mã thay vì sử dụng python xxx.py như trước.

Chúng tôi có thể thử chạy mã được tạo tự động khi dự án được tạo.

$ uv run .\hello.py Xin chào từ dự án của tôi!

3.3. Quản lý thuộc tính

Quản lý các phần phụ thuộc là mục tiêu chính của công việc sử dụng các công cụ uv. npm và Cargo.

$ uv add pandas 7 gói trong 3,41 giây Chuẩn bị 6 giây trong 4,63 giây Đã cài đặt 6 giây trong 1,80 giây + numpy==2.2.1 + pandas==2.2.3 + python-dateutil==2.9.0.post0 + pytz= =2024.2 + sáu==1.17.0 + tzdata==2024.2

Tôi đã cố gắng cài đặt phần phụ thuộc của gấu trúc (các gói mà gấu trúc phụ thuộc cũng được cài đặt tự động) động).

Bây giờ hãy xem những thay đổi trong tệp uv.lock.

$ cat .\uv.lock version = 1 require-python = ">=3.12" [[package]] name = "myproject" version = "0.1.0" source = { virtual = "." } phụ thuộc = [ { name = "pandas" }, ] [package.metadata] require-dist = [{ name = "pandas", specifier = ">=2.2.3" }] [[gói]] name = Phiên bản "gấu trúc" = "2.2.3" nguồn = { đăng ký = "https://pypi.org/simple" } phụ thuộc = [ { name = "numpy" } , { name = "python-dateutil" }, { name = "pytz" }, { name = "tzdata" }, ] [[gói]] name = "pytz" phiên bản = "2024.2" source = { register = "https://pypi.org/simple" }

Tôi đã xóa rất nhiều nội dung trong nhật ký vì nội dung tổng hợp có thể quá nhiều. từng gói và các gói không phụ thuộc.

Chúng tôi không cần phải chỉnh sửa file uv.lock.

Sau khi giới thiệu gấu trúc, hãy xem liệu nó có thể được sử dụng trong hello.py hay không.

$ cat .\hello.py nhập gấu trúc dưới dạng pd def main(): print("Xin chào từ dự án của tôi!") df = pd.DataFrame( { "A": [1, 2, 3], "B": [4 , 5, 6], } ) print(df) if __name__ == "__main__": main() $ uv run .\hello.py Xin chào từ myproject! 4 1 2 5 2 3 6

Bạn có thể sử dụng gói pandas đã cài đặt một cách bình thường. Bây giờ hãy thử xóa các phần phụ thuộc.

$ uv loại bỏ gấu trúc Đã giải quyết 1 gói trong 12 mili giây Đã gỡ cài đặt 6 gói trong 1,18 giây - numpy==2.2.1 - pandas==2.2.3 - python-dateutil==2.9.0.post0 - pytz==2024.2 - six==1.17 .0 - tzdata==2024.2 $ cat .\uv.lock version = 1 require-python = ">=3.12" [[gói]] tên = "myproject" phiên bản = "0.1.0" nguồn = { ảo = "."

Sau khi sử dụng lệnh uv Remove để xóa gói pandas, các gói khác mà pandas phụ thuộc cũng sẽ tự động bị xóa.

Chúng ta thấy file uv.lock cũng được khôi phục về nội dung ban đầu.

Hãy thử chạy lại hello.py và xem.

$ uv run .\hello.py Traceback (cuộc gọi gần đây nhất gần đây nhất): Tệp "D:\projects\python\myproject\hello.py", dòng 1, trong  nhập gấu trúc dưới dạng pd ModuleNotFoundError: Không có mô-đun nào có tên 'pandas '

Chắc chắn là nó không thể chạy được.

3.4 Phân biệt môi trường phát triển và môi trường sản xuất

Một chức năng thường được sử dụng khác là phân biệt sự phụ thuộc của môi trường phát triển và môi trường sản xuất. Chức năng này rất phổ biến trong NodeJS và Rust.

Ví dụ: chúng tôi muốn cài đặt gấu trúc vào môi trường phát triển và cài đặt các yêu cầu vào môi trường sản xuất.

$ uv add --group dev pandas Đã giải quyết 7 gói trong 1,72 giây Đã cài đặt 6 gói trong 1,39 giây + numpy==2.2.1 + pandas==2.2.3 + python-dateutil==2.9.0.post0 + pytz==2024.2 + six==1.17.0 + tzdata==2024.2 $ uv add --group yêu cầu sản xuất Đã giải quyết 12 gói trong 2,72 giây Chuẩn bị 5 gói trong 1,31 giây Đã cài đặt 5 gói trong 68 mili giây + certifi==2024.12.14 + charset-normalizer==3.4.1 + idna==3.10 + request==2.32.3 + urllib3==2.3.0

Sau khi cài đặt, tệp uv.lock sẽ tự động thêm các gói khác nhau và các gói phụ thuộc của chúng, những gói này sẽ không được mô tả ở đây.

Từ pyproject.toml của dự án, bạn có thể thấy các gói phụ thuộc của các môi trường khác nhau.

$ cat .\pyproject.toml [project] name = "myproject" version = "0.1.0" description = "Thêm mô tả của bạn vào đây" readme = "README.md" require-python = ">=3.12" dependency = [] [nhóm phụ thuộc] dev = [ "pandas>=2.2.3", ] production = [ "requests>=2.32.3", ]

4. Sự phát triển trong tương lai

uv cũng có thể xây dựng và xuất bản các gói Python lên PyPi. Các chi tiết cụ thể sẽ không được thảo luận trong bài viết này.

Kể từ khi phát hành uv, nhóm đã cam kết ưu tiên khả năng tương thích, hiệu suất và độ ổn định trên nhiều nền tảng, đồng thời giúp người dùng chuyển đổi suôn sẻ các dự án sang sử dụng uv để quản lý.

Về lâu dài, uv sẽ phát triển thành một trình quản lý gói và dự án Python hoàn chỉnh, cung cấp trải nghiệm phát triển toàn diện, bao gồm tất cả các khía cạnh từ cài đặt Python đến quản lý dự án, đơn giản hóa hơn nữa quy trình phát triển của các dự án Python và nâng cao hiệu quả phát triển.

Cuối cùng, bài viết này về Không còn đau đầu trong quản lý gói Python: Bắt đầu nhanh chóng với các công cụ uv kết thúc tại đây. Nếu bạn muốn biết thêm về Không còn đau đầu trong quản lý gói Python: Bắt đầu nhanh chóng với các công cụ uv, vui lòng tìm kiếm bài viết CFSDN hoặc. tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ 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