Notice: file_put_contents(): Write of 6885 bytes failed with errno=28 No space left on device in /var/www/tgoop/post.php on line 50

Warning: file_put_contents(): Only 12288 of 19173 bytes written, possibly out of free disk space in /var/www/tgoop/post.php on line 50
Zen of Python@zen_of_python P.4113
ZEN_OF_PYTHON Telegram 4113
Как обойтись без requirements.txt для скрипта-одиночки, или чем хорош uv

Стандарт PEP 723 и менеджер зависимостей uv упростили обращение со скриптами-одиночками. Теперь мы можем встраивать метаданные о зависимостях прямо в скрипты, что устраняет необходимость в requirements.txt или менеджерах пакетов.

Рассмотрим на простом примере скрипта wordlookup.py. Он извлекает определения слов из API словаря. Этот скрипт использует библиотеку httpx для выполнения асинхронных запросов. Вот как выглядит основной код:

import argparse
import asyncio
import json
import os
import textwrap
import httpx

async def fetch_word_data(word: str) -> list:
"""Получает данные слова из API словаря."""
url = f"https://api.dictionaryapi.dev/api/v2/entries/en/{word}"
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status()
return response.json()

async def main(word: str):
"""Получает и выводит определения для данного слова."""
data = await fetch_word_data(word)
if data:
print(f"Определения для '{word}':")
for entry in data:
for meaning in entry.get("meanings", []):
part_of_speech = meaning.get("partOfSpeech")
definitions = meaning.get("definitions", [])
if part_of_speech and definitions:
print(f"\n{part_of_speech}:")
for definition_data in definitions:
definition = definition_data.get("definition")
if definition:
print(f"- {definition}")

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Получить определения слова.")
parser.add_argument("word", type=str, help="Слово для поиска.")
args = parser.parse_args()
asyncio.run(main(args.word))

Чтобы добавить зависимость httpx в наш скрипт, мы можем использовать команду uv:

uv add --script wordlookup.py httpx

После выполнения этой команды в верхней части скрипта будут добавлены метаданные о зависимостях, что позволит uv автоматически управлять установкой необходимых библиотек при запуске скрипта.

Запускаем скрипт:

uv run wordlookup.py <слово>

При первом запуске uv создаст изолированную виртуальную среду и установит все необходимые зависимости. В дальнейшем uv будет использовать уже созданную среду.

#факт
@zen_of_python
👍5🔥42



tgoop.com/zen_of_python/4113
Create:
Last Update:

Как обойтись без requirements.txt для скрипта-одиночки, или чем хорош uv

Стандарт PEP 723 и менеджер зависимостей uv упростили обращение со скриптами-одиночками. Теперь мы можем встраивать метаданные о зависимостях прямо в скрипты, что устраняет необходимость в requirements.txt или менеджерах пакетов.

Рассмотрим на простом примере скрипта wordlookup.py. Он извлекает определения слов из API словаря. Этот скрипт использует библиотеку httpx для выполнения асинхронных запросов. Вот как выглядит основной код:

import argparse
import asyncio
import json
import os
import textwrap
import httpx

async def fetch_word_data(word: str) -> list:
"""Получает данные слова из API словаря."""
url = f"https://api.dictionaryapi.dev/api/v2/entries/en/{word}"
async with httpx.AsyncClient() as client:
response = await client.get(url)
response.raise_for_status()
return response.json()

async def main(word: str):
"""Получает и выводит определения для данного слова."""
data = await fetch_word_data(word)
if data:
print(f"Определения для '{word}':")
for entry in data:
for meaning in entry.get("meanings", []):
part_of_speech = meaning.get("partOfSpeech")
definitions = meaning.get("definitions", [])
if part_of_speech and definitions:
print(f"\n{part_of_speech}:")
for definition_data in definitions:
definition = definition_data.get("definition")
if definition:
print(f"- {definition}")

if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Получить определения слова.")
parser.add_argument("word", type=str, help="Слово для поиска.")
args = parser.parse_args()
asyncio.run(main(args.word))

Чтобы добавить зависимость httpx в наш скрипт, мы можем использовать команду uv:

uv add --script wordlookup.py httpx

После выполнения этой команды в верхней части скрипта будут добавлены метаданные о зависимостях, что позволит uv автоматически управлять установкой необходимых библиотек при запуске скрипта.

Запускаем скрипт:

uv run wordlookup.py <слово>

При первом запуске uv создаст изолированную виртуальную среду и установит все необходимые зависимости. В дальнейшем uv будет использовать уже созданную среду.

#факт
@zen_of_python

BY Zen of Python


Share with your friend now:
tgoop.com/zen_of_python/4113

View MORE
Open in Telegram


Telegram News

Date: |

How to create a business channel on Telegram? (Tutorial) The court said the defendant had also incited people to commit public nuisance, with messages calling on them to take part in rallies and demonstrations including at Hong Kong International Airport, to block roads and to paralyse the public transportation system. Various forms of protest promoted on the messaging platform included general strikes, lunchtime protests and silent sit-ins. The channel also called on people to turn out for illegal assemblies and listed the things that participants should bring along with them, showing prior planning was in the works for riots. The messages also incited people to hurl toxic gas bombs at police and MTR stations, he added. “[The defendant] could not shift his criminal liability,” Hui said. A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first.
from us


Telegram Zen of Python
FROM American