ابزار مدیریت پروژه همه در یک پایتون که در Rust نوشته شده است با هدف جایگزینی pip، venv و موارد دیگر است. در اینجا یک نگاه اول است.
- تنظیم uv و کار با venvs
- استفاده از پیپ با uv
- قفل کردن، کامپایل کردن و همگامسازی وابستگیها
- استفاده از pip-compile و pip-sync با uv
- محدودیتهای uv
از میان همه انتقاداتی که به Python وارد میشود، یکی از معتبرترین و متأسفانه ماندگارترین آنها وضعیت آشفته اکوسیستم بستهبندی آن است. همانطور که XKCD به شکلی به یاد ماندنی توسط XKCD نشان داده است، نسبت به گذشته کمتر آشفته است، اما هنوز به سختی ایده آل است. اشخاص ثالثی مانند poetry و pipenv با ارائه ابزارهایی که بر اساس استانداردهای موجود Python ساخته شدهاند اما بر اساس گردشهای کاری ظریفتر طراحی شدهاند، شکافها را پر کردهاند.
اکنون uv
را داریم، جدیدترین افزونه به اکوسیستم نصب کننده بسته پایتون. ایجاد شده توسط Astral، همان تیمی که از ruff ابزار پر کردن پایتون نگهداری می کند، uv
قصد دارد جایگزینی همه در یک برای pip
باشد، < code>venv و بسیاری دیگر از ابزارهای مدیریت پروژه خط فرمان برای پایتون. برخلاف سایر مدیران پروژه پایتون، uv
عمدتاً در Rust نوشته شده است، که در نظر گرفته شده است تا آن را سریعتر از سایر ابزارهای کلاس خود، به طور بالقوه بر اساس ترتیبات بزرگی، کند.
راه اندازی uv و کار با venvs
هنگامی که uv
را نصب کردید، می توانید با دستور uv venv
یک محیط مجازی در یک پوشه مشخص ایجاد کنید. اگر خودتان نام دایرکتوری ارائه نکنید، venv در دایرکتوری .venv
ایجاد می شود.
venv uv
ایجاد شده دقیقاً مانند یک محیط مجازی معمولی با چند تغییر جزئی رفتار خواهد کرد. شما venv را به همان روش معمولی فعال میکنید—مثلاً source .venv/bin/activate
در Linux/macOS یا .venv\Scripts\activate
در Microsoft ویندوز.
با این حال، venv uv
ایجاد میکند pip
یا setuptools
را نمیدارد به صورت پیشفرض نصب شده باشد. برای یک پروژه مدیریت شده با uv
، از شما انتظار می رود که در صورت امکان از ابزارهای مدیریت uv
استفاده کنید.
استفاده از pip با uv
uv
نسخه خود را از pip
حفظ میکند که شما به صراحت از طریق uv
به آن دسترسی دارید. دستورات یکسان هستند:
uv pip install flask
uv
از اکثر رفتارهای رایج pip
پشتیبانی میکند، مانند نصبهای قابل ویرایش، انتخاب اجزای اختیاری (مثلاً uv pip install "flask[dotenv]"< /code>)، یا از منبع
git
نصب کنید.
چند رفتار هنوز پشتیبانی نمیشود ، اما اینها نباید در کار روزمره شما اختلال ایجاد کند. با این حال، برخی چیزها به طور قابل توجهی متفاوت هستند.
استفاده از "uv pip" با git
اگر میخواهید نیازی را از یک مخزن git
یا GitHub نصب کنید، توجه داشته باشید که باید از نحو کمی متفاوت با استفاده از pip
استفاده کنید. شما باید نام بسته را برای نصب، @
و سپس منبع را مشخص کنید:
uv pip install "<package_name> @ https://github.com/<user>/<repo>"
به نقلقولهایی که برای فرار درست از @
لازم است توجه کنید. همچنین باید نحو خاص را به از احراز هویت با پیوندهای git
استفاده کنید.
استفاده از "uv pip freeze" به جای "pip list"
برای فهرست کردن موارد نصب شده در یک venv معین، از uv pip freeze
به جای uv pip list
استفاده کنید. نتایج را میتوان به یک فایل هدایت کرد، همانطور که معمولاً با تجمیع پیپ
انجام میشود.
قفل کردن، کامپایل کردن و همگام سازی وابستگی ها
uv
چندین ویژگی را برای قفل کردن و همگامسازی وابستگیها با فهرست نیازمندیهای پروژه ارائه میدهد.
هنگامی که از uv pip freeze
استفاده میکنید، فهرست به دست آمده دارای الزامات نسخه صریح برای هر بسته است، به این معنی که در نسخههای خاص مورد نظر "قفل" میشود.
اگر می خواهید یک فایل pyproject.toml
یا requirements.in
موجود را بردارید و یک مجموعه وابستگی قفل شده به عنوان requirement.txt
ایجاد کنید، استفاده کنید:
uv pip compile pyproject.toml -o requirements.txt
# or ...
uv pip compile requirements.in -o requirements.txt
استفاده از pip-compile و pip-sync با uv
هدف بلند مدت
uv
ارائه جایگزین هایی برای چندین ابزار پایتون است. دو تا از ابزارهایی که uv
در حال حاضر می توانند جایگزین شوند، اگرچه به روشی اولیه، pip-compile
و pip-sync
هستند.
pip-sync
محیط مجازی پروژه را می گیرد و مجموعه بسته های آن را با لیست ارائه شده از بسته ها، معمولاً یک فایل requirements.txt
همگام می کند. با uv
، برای همگامسازی وابستگیهای نصبشده پروژه با فهرستی از وابستگیهای قفلشده، مانند ابزار pip-sync
، از:
استفاده کنید.
uv pip sync requirements.txt
ابزار pip-compile
یک فایل requirements.in
ایجاد می کند که وابستگی های "قفل شده" را فهرست می کند، از یک pyproject.toml
موجود یا requirements.txt
پرونده:
uv pip compile .\pyproject.toml -o requirements.in
این یک لیست قفلشده از وابستگیهای فهرست شده در pyproject.toml
را در requirements.in
ذخیره میکند، که سپس میتواند برای بازیابی نیازمندیهایی که با یک پیکربندی خاص مطابقت دارند استفاده شود.
محدودیت های uv
پروژه uv
هنوز در مراحل اولیه خود است، بنابراین هنوز طیف کاملی از عملکردهای مورد نظر را پشتیبانی نمی کند. بسیاری از ویژگی ها ناقص هستند (اگرچه به این صورت مستند شده اند)، و بسیاری دیگر قرار است بعدا اضافه شوند.
موضوع دیگری برای uv
در Rust نوشته شده است — که البته یکی از نقاط قوت آن نیز می باشد. نوشته شدن در Rust باعث می شود uv
سریع و کارآمد باشد، اما همچنین می تواند کمک به آن را برای کاربران پایتون دشوار کند. یک توسعهدهنده پایتون که میخواهد به ابزارهای پایتون کمک کند، بیشتر باید فرآیند خاصی را برای مشارکت در پروژه یاد بگیرد. اما یک توسعهدهنده پایتون که میخواهد به uv
یا هر ابزار پایتون دیگری که در Rust نوشته شده است کمک کند، باید Rust را نیز یاد بگیرد.
از آنجایی که نوشتن ابزارهای پایتون در Rust هنوز یک پدیده نسبتاً جدید است، مشخص نیست چقدر تأثیر آن بر نحوه مشارکت توسعه دهندگان پایتون در چنین پروژه هایی خواهد بود. اما واضح است که Rust در حال تبدیل شدن به یک انتخاب معتبر برای نوشتن ابزارهای Python است، اگر فقط به خاطر اولویت دادن به عملکرد.
پست های مرتبط
نحوه استفاده از uv: یک نصب کننده بسته Python بسیار سریع
نحوه استفاده از uv: یک نصب کننده بسته Python بسیار سریع
نحوه استفاده از uv: یک نصب کننده بسته Python بسیار سریع