Python
A Eco nunca teve falta de ferramentas de gerenciamento de embalagens e de gerenciamento ambiental, desde o clássico pip
evirtualenv
até pip-tools
econda
e depois a modernização do Poetry
ePDM
E assim por diante. Cada ferramenta tem sua área de especialização, mas isso também costuma tornar a cadeia de ferramentas de um desenvolvedor fragmentada e complexa.
Agora, a partir de Astral
Empresa (conhecida) Python
Linter Ruff
(o criador do uv
O Crossing abriu novas possibilidades. Este produto usa Rust
ferramentas escritas no idioma, aspira a ser um Rápido, unificado e amigável ao desenvolvedor Python
Gerente de pacotes e projetos. Seu objetivo é claro: aproveitar Rust
ecologicamente correto Cargo
A experiência bem-sucedida da empresa oferece uma solução completa.uv
Além de ser rápido, ele também integra gerenciamento de ambiente, instalação de pacotes, resolução de dependências, gerenciamento de projetos e muito mais.
Por que UV?
Em comparação com as ferramentas existentesuv
Oferecendo uma alternativa mais moderna e eficiente para seus principais destaques:
- Melhoria significativa da velocidadeBaseado em
Rust
de otimização de tempo de compilação e processamento simultâneo eficiente.uv
Em operações comuns, como resolução de dependências e instalação de pacotes, ele é mais rápido do que as ferramentas tradicionais, como opip
talvezPoetry
O sistema de armazenamento em cache global integrado também torna as operações repetitivas quase instantâneas. O mecanismo de cache global eficiente incorporado também torna as operações repetitivas quase instantâneas. Por trás disso está oRust
recursos da linguagem (por exemplo, simultaneidade sem medo devido à segurança da memória) e bibliotecas subjacentes de alta qualidade (por exemplo, aTokio
eReqwest
) Créditos. - Integração funcional completa::
uv
Com a intenção de ser um "canivete suíço" nas mãos dos desenvolvedores, ele abrange tudo, desde a criação e o gerenciamento de ambientes virtuais até a instalação e o bloqueio de dependências (suporte nativo).pyproject.toml
compatívelrequirements.txt
), para executar scripts, gerenciar ferramentas globais e até mesmo instalarPython
versão do processo de desenvolvimento completo. - Gerenciamento moderno de projetosSuporte nativo
pyproject.toml
(padrão PEP 517/518/621), que é o padrão moderno dePython
O perfil padrão de fato do projeto.uv
Capacidade de lidar claramente com agrupamentos de dependências (por exemplo, dependências de desenvolvimento) e gerar dependências entre plataformasuv.lock
Arquivo bloqueado. Esse arquivo de bloqueio registra com precisão as versões específicas e as origens de todas as dependências diretas e indiretas, garantindo que um ambiente completamente consistente possa ser reconstruído em qualquer máquina, a qualquer momento, para uma compilação verdadeiramente determinística. - Boa compatibilidade::
uv
Fornece um link para opip
Interface de comando altamente compatível (uv pip ...
) e pode entenderrequirements.txt
que possibilita a migração de projetos existentes para o formato de arquivouv
O processo é relativamente tranquilo. - Desenvolvimento ativo e o futuro:: Por
Astral
A equipe mantém ativamente e faz iterações rápidas usando oMIT
Licença de código aberto. Grande interesse da comunidade, grande potencial de desenvolvimento e um futuro promissor.
fazer uso de uv
Se a empresa não tiver um sistema de gerenciamento de dados, espera-se que os desenvolvedores tenham uma experiência semelhante. Node.js
( npm
/ yarn
/ pnpm
) ou Rust
( Cargo
) como fluxos de trabalho de gerenciamento de dependências fluidos e uniformes.
Instalação de UV
montagem uv
Muito simples. A recomendação oficial é usar o script de instalação fornecido, pois ele não depende do script de instalação existente. Python
Meio ambiente. É claro que, ao pip
ou o System Package Manager também são opções viáveis.
- Método recomendado (scripting entre plataformas)::
# macOS / Linux (bash, zsh, etc.) curl -LsSf https://astral.sh/uv/install.sh | sh # Windows (PowerShell) powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
tomar nota deO script oficial definirá por padrão o
uv
Instale em um local específico no diretório do usuário (por exemploLinux
/macOS
(usado em uma expressão nominal)~/.uv/bin
talvezWindows
(usado em uma expressão nominal)%LOCALAPPDATA%\uv\bin
), que geralmente está localizado no disco do sistema (por exemploC:
(Disco). - Usando o pip (requer um ambiente Python existente)::
pip install uv # 或推荐使用 pipx 进行隔离安装 # pipx install uv
Se o seu
Python
Ambiental oupipx
O ambiente em si não está no disco do sistema e, ao instalá-lo dessa forma, ouv
Em geral, ele também segue sua posição. Você pode definir isso configurando o parâmetroPIPX_HOME
Variáveis de ambiente para controlepipx
O caminho de instalação do - Usando o System Package Manager (exemplo)::
# macOS (Homebrew) brew install uv # Windows (Scoop) # 可以先将 Scoop 本身安装到非系统盘,然后用它安装 uv scoop install uv # Arch Linux pacman -S uv
Se, como no caso de
Scoop
Esse gerenciador de pacotes é configurado em um disco que não é do sistema e, em seguida, os aplicativos que ele instala (incluindo ouv
) geralmente também são instalados na mesma unidade. - Uso do Cargo (requer um ambiente Rust)::
cargo install uv --locked --git https://github.com/astral-sh/uv
uv
será instalado no diretórioCargo
(usado em uma expressão nominal)bin
Catálogo. Isso pode ser feito definindo a opçãoCARGO_HOME
A variável de ambiente define todo o.cargo
(que contém o arquivocrates
e produtos compilados) migraram para discos que não são do sistema.
Após a conclusão da instalação, execute uv --version
talvez uv help
para verificar se a instalação foi bem-sucedida.
Configuração do local de armazenamento de dados UV (avançado)
Por padrão, ouv
Ele armazenará em cache, fará o download do Python
bem como através da versão uv tool install
As ferramentas globais instaladas são armazenadas em um local padrão no diretório do usuário (geralmente na unidade do sistema). Se desejar armazená-las em outra unidade (como o diretório D:
para economizar espaço no disco do sistema ou para reduzir o tempo de espera. SSD
Write, que pode ser definido pela configuração dovariável de ambientepara que isso aconteça.
Aqui estão algumas das principais variáveis de ambiente:
UV_CACHE_DIR
: Controleuv
Localização do diretório do cache. O cache inclui arquivos de pacotes baixados, compiladoswheel
etc., que podem ocupar mais espaço.UV_PYTHON_INSTALL_DIR
:: Controle por meio deuv python install
baixado e gerenciadoPython
O local onde o interpretador será instalado.UV_TOOL_INSTALL_DIR
:: Controle por meio deuv tool install
Global instaladoPython
Local de armazenamento de ferramentas e seus ambientes isolados.
Como definir variáveis de ambiente (exemplo):
Suponha que o objetivo seja combinar todos os uv
Os dados são armazenados no D:\uvdata
Catálogo.
- Windows (PowerShell - configuração temporária, válida apenas para a sessão atual):
$env:UV_CACHE_DIR = "D:\uvdata\cache" $env:UV_PYTHON_INSTALL_DIR = "D:\uvdata\python" $env:UV_TOOL_INSTALL_DIR = "D:\uvdata\tools" # 之后在此会话中运行 uv 命令,数据将写入新位置 uv pip install requests
- Windows (variáveis de ambiente do sistema - configurações permanentes):
- existir
Windows
Procure por "environment variables" (variáveis de ambiente) na barra de pesquisa. - Clique em "Edit System Environment Variables" (Editar variáveis de ambiente do sistema).
- Na caixa de diálogo "Propriedades do sistema", clique no botão "Variáveis de ambiente...". botão.
- Na área "User Variables" (Variáveis do usuário) ou "System Variables" (Variáveis do sistema) (recomenda-se usar as variáveis do usuário, a menos que seja necessário para todos os usuários), clique em "New ..." .".
- Digite o nome da variável (por exemplo
UV_CACHE_DIR
) e valores variáveis (comoD:\uvdata\cache
). - Repita esse procedimento para as outras duas variáveis.
- Clique em "OK" para fechar todas as caixas de diálogo.
- crux:: Obrigatórioreabrir
PowerShell
ou na janela do prompt de comando para que a nova variável de ambiente entre em vigor.
- existir
- Linux / macOS (bash/zsh - configurações temporárias):
export UV_CACHE_DIR="/path/to/non_system_drive/uvdata/cache" export UV_PYTHON_INSTALL_DIR="/path/to/non_system_drive/uvdata/python" export UV_TOOL_INSTALL_DIR="/path/to/non_system_drive/uvdata/tools" # 之后在此会话中运行 uv 命令 uv pip install requests
- Linux / macOS (configuração permanente):
topológicoexport
em seu arquivo de configuração do Shell (por exemplo~/.bashrc
,~/.zshrc
,~/.profile
) e, em seguida, execute osource ~/.your_config_file
ou reinicie o terminal para que a configuração tenha efeito.
Observações importantes:
- Depois de definir essas variáveis de ambiente, o
uv
Os caminhos especificados são usados automaticamente. Certifique-se de que esses diretórios existam e queuv
Ter acesso de gravação. - Ambiente virtual (
.venv
) posição:uv venv
Padrões em seuDiretório raiz do projetoCriar.venv
pasta. Como resultado, oDesde que o projeto em si esteja localizado em um disco que não seja do sistema (como oD:\myproject
), então.venv
Naturalmente, ela também estará nesse disco. Normalmente não é necessário fornecer uma lista de.venv
Configure os caminhos individualmente para evitar o disco do sistema. Obviamente, você também pode evitar o disco do sistema aouv venv /path/to/custom/env
Especifique explicitamente onde o ambiente virtual deve ser criado, mas isso serve mais para personalizar o caminho do ambiente do que para resolver o problema de armazenamento do disco do sistema.
Ao configurar essas variáveis de ambiente adequadamente, você pode gerenciar de forma eficaz o uv
gerada, direcionando-a para um local de armazenamento onde o espaço é mais abundante ou mais adequado.
Conceitos básicos de UV
no uso de uv
Ao gerenciar um projeto, é importante entender os seguintes conceitos básicos:
pyproject.toml
: ModernoPython
Perfil padrão do projeto (com base no PEP 517/518/621).uv
Use-o para definir os metadados do projeto (nome, versão, descrição, etc.), necessáriosPython
Versão (requires-python
) e as principais dependências do projeto (dependencies
) e grupos de dependências opcionais (por exemplodev-dependencies
). É a "fonte única da verdade" para a configuração do projeto.uv.lock
:: Poruv
Um arquivo bloqueado que é gerado e gerenciado automaticamente. Ele registra com precisão os números de versão específicos e os hashes de origem de todas as dependências do projeto (inclusive as dependências indiretas). Seu principal valor é garantir queReprodutibilidade do ambiente: sempre e onde quer que seja baseado no mesmouv.lock
instala as dependências, você obtém exatamente a mesma combinação de pacotes.Esse arquivo não deve ser editado manualmente.- Ambiente virtual (
.venv
)::uv
Altamente recomendado e simplifica o uso de ambientes virtuais. O padrão é criar um ambiente virtual no diretório raiz do projeto chamado.venv
de ambientes isolados para abrigar as dependências do projeto. A maioria dosuv
(por exemplo.add
,sync
,run
) são detectados automaticamente e as operações são realizadas nesse ambiente, evitando oPython
Poluição do meio ambiente.
Gerenciando projetos Python com UV
Abaixo está uma demonstração, por meio de um processo completo, de como usar uv
para criar e gerenciar um Python
Projeto.
Inicialize o projeto (uv init
)
fazer uso de uv init
O comando pode criar rapidamente a estrutura básica de um novo projeto.
# 确保在期望的驱动器上操作,例如在 D: 盘
# D:
# mkdir my_uv_project
# cd my_uv_project
# 初始化名为 my_uv_project 的项目
uv init my_uv_project
cd my_uv_project
Após a implementação.uv
estará em my_uv_project
é gerado:
.git/
responder cantando.gitignore
Inicialização automáticaGit
e fornece um repositório comum dePython
evento esportivo.gitignore
Documentação..python-version
Documentação de propostas de projetos ou solicitações dePython
versão (por exemplo.3.12
).uv
consultará este documento para selecionar ou instalar oPython
Intérprete.pyproject.toml
Arquivo de configuração central do projeto, contendo o nome, a versão e a descrição do projeto,Python
Requisitos de versão e vaziodependencies
Lista.README.md
: um vazioREADME
Documentação.src/my_uv_project/__init__.py
Uma estrutura básica de código-fonte (se estiver usando osrc
(Layout). Ou um simpleshello.py
Exemplo de arquivo.
# pyproject.toml 示例内容 (可能略有不同)
[project]
name = "my-uv-project"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12" # 根据系统情况或指定版本生成
dependencies = []
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
# uv 可能还会添加 tool.uv 相关配置
Criar e sincronizar o ambiente (uv venv
, uv sync
)
Depois que o projeto for inicializado, você precisará criar o ambiente virtual e sincronizar o estado da dependência (mesmo que seja uma dependência vazia, a primeira sincronização gerará o uv.lock
).
- Criar um ambiente virtual (
uv venv
)::
mesmo queuv sync
e outros comandos criam automaticamente.venv
mas também pode ser criado explicitamente:# 创建默认的 .venv 环境 (uv 会根据 .python-version 或系统查找合适的 Python) # 这个 .venv 会在当前项目目录下创建 uv venv # 创建时指定 Python 版本 uv venv --python 3.11 # 指定自定义环境名称 (不常用,因为 uv 生态默认与 .venv 配合) uv venv my_custom_env
Se for necessário um ambiente de operação manual (por exemplo, usando um equipamento não
uv
gerenciada), então você precisa ativá-la:# Linux/macOS source .venv/bin/activate # Windows (PowerShell) .venv\Scripts\Activate.ps1 # Windows (CMD) .venv\Scripts\activate.bat
trabalhoPara a grande maioria dos
uv
Comando (add
,remove
,sync
,run
etc.).A ativação manual do ambiente geralmente não é necessária(matemática) gênerouv
localizará e usará automaticamente o.venv
. - Ambiente sincronizado (
uv sync
)::
Esse é um dos principais comandos usados para garantir que o estado do ambiente virtual seja o mesmo que o estado dopyproject.toml
(viauv.lock
documentos) ourequirements.txt
O arquivo é precisamente consistente. Na primeira vez em que for executado, ele será:- recuperar
pyproject.toml
da definição de dependência. - Realiza a resolução de dependências.
- gerando
uv.lock
Documentação. - existir
.venv
(inicialmente, apenas o projeto em si pode estar disponível como um pacote editável).
# 在项目根目录运行 uv sync
Após a execução, você verá
.venv
O diretório é criado ou atualizado e umuv.lock
Documentação. - recuperar
Gerenciamento de dependências (uv add
, uv remove
, uv lock
)
isto é uv
As funções mais comumente usadas, recomendadas para uso com base em pyproject.toml
do fluxo de trabalho.
- Adicionar uma dependência (
uv add
):
Adicione o pacote à pastapyproject.toml
(usado em uma expressão nominal)[project.dependencies]
e instala ou atualiza automaticamente o.venv
ambiente. Ao mesmo tempouv.lock
Ele também será atualizado.# 添加最新稳定版的 pandas uv add pandas # 添加 requests,并指定版本约束 uv add "requests>=2.20,<3.0" # 添加开发依赖 (如测试框架 pytest),会写入 [tool.uv.dev-dependencies] uv add pytest --dev uv add ruff --dev # 从 Git 仓库添加依赖 uv add git+https://github.com/psf/requests.git # 添加本地路径的包 (以可编辑模式安装) uv add -e ../my_local_library
- Remover dependências (
uv remove
):
através de (uma lacuna)pyproject.toml
remove o pacote especificado do diretório.venv
para desinstalá-lo e as dependências downstream que não são mais necessárias.# 移除 pandas uv remove pandas # 移除开发依赖 pytest uv remove pytest --dev
- Atualização de dependências:
- Atualize todas as dependências para
pyproject.toml
A versão mais recente permitida pelas restrições e regenera ouv.lock
::# 1. 更新 lock 文件 uv lock --upgrade # 2. 应用 lock 文件更新到环境 uv sync
- Atualizar apenas pacotes específicos para a versão mais recente:
# 方法一:指定包更新 lock 文件,然后同步 uv lock --upgrade-package requests uv sync # 方法二:直接 'add' 最新版 (也会更新 lock 和环境) uv add requests@latest
- Atualize todas as dependências para
- edição manual
pyproject.toml
imperatriz:
Se você modificar diretamente opyproject.toml
no arquivo, é necessário executar as duas etapas a seguir para que as alterações tenham efeito:uv lock
:: Baseado empyproject.toml
O novo conteúdo recalcula as dependências e atualiza ouv.lock
Documentação.uv sync
:: Willuv.lock
O estado no arquivo é sincronizado com o.venv
Ambientes virtuais.
Execute o código e os comandos (uv run
)
uv run
ser uv
Um recurso extremamente conveniente. Ele permite que você crie um arquivo na pasta uv
Execução no contexto de um ambiente virtual gerenciado Python
script ou qualquer comando.Não há necessidade de ativar manualmente o ambiente com antecedência. Isto é uv
Um dos principais recursos de um fluxo de trabalho simplificado que vale a pena dominar.
Princípio de funcionamento:
Quando você executa o uv run <command> [args...]
Tempo:
- Descoberta automática do ambiente::
uv
localizará automaticamente o diretório atual e o diretório pai do.venv
Ambientes virtuais. - Execução do ambiente de configuração interna:
- com relação a
uv run python your_script.py
tal ordem.uv
chamará diretamente o.venv
do diretórioPython
Intérprete (.venv/bin/python
talvez.venv/Scripts/python.exe
) para executar o script. - com relação a
uv run pytest tests/
talvezuv run ruff format .
tal ordem.uv
não se esqueça deDentro do processo filho que executa o comandoO interino será.venv/bin
(ou.venv/Scripts
) é adicionado ao sistemaPATH
na parte superior das variáveis de ambiente. Dessa forma, mesmo que você não ative o ambiente, o sistema operacional poderá encontrar e executar as ferramentas de linha de comando instaladas no ambiente virtual (como opytest
,ruff
).
- com relação a
Como faço para executar um arquivo Python?
Para executar o projeto Python
(por exemplo. src/my_package/main.py
ou o diretório raiz do app.py
), o que é recomendado:
uv run python src/my_package/main.py
# 或者
uv run python app.py
de ponta:
- Não é necessária ativação manualElimina a necessidade de inserir
source .venv/bin/activate
talvez.venv\Scripts\Activate.ps1
O incômodo da - Garantia de consistência ambientalGaranta que seu código e suas ferramentas sejam sempre executados no ambiente virtual correto para a configuração do seu projeto.
- Simplificando os scripts de CI/CDEm processos automatizados, como
GitHub Actions
,GitLab CI
) pode ser usado diretamente nouv run
Execute tarefas como testes, criação e implementação sem precisar lidar com uma lógica complexa de ativação de ambiente.
mais uv run
exemplo típico:
# 运行安装在环境中的 pytest 测试
uv run pytest tests/
# 运行安装在环境中的 ruff 代码格式化
uv run ruff format .
# 运行任意系统命令,uv 会确保 .venv/bin 在 PATH 中
uv run alembic upgrade head
# 向脚本传递参数
uv run python your_script.py --input data.csv --output results.json
Quando ainda preciso fazer a ativação manual?
Ativação manual (source activate
ou comandos semelhantes) foi bastante reduzido. Provavelmente, principalmente na mesma sessão do Shell de que você precisa:
- Execução interativa frequente de vários comandos que dependem do ambiente virtual (por exemplo, digitar diretamente o comando
python
Vá para o interpretador e depois para opytest
E mais uma vez.ruff
). - Use algumas variáveis de ambiente específicas que dependem das configurações do script de ativação (além da variável
PATH
(que não seja) o nãoPython
Ferramentas.
Mas para a maioria das tarefas de desenvolvimento diárias, ouv run
O gerenciamento ambiental automatizado fornecido é mais conveniente e eficiente.
fazer uso de requirements.txt
(compatível com o fluxo de trabalho)
mesmo que uv
Recomendado pyproject.toml
mas também oferece suporte total ao tradicional requirements.txt
fluxos de trabalho e fornece pip
Interface de comando compatível e mais rápida.
- Instalar dependências (
uv pip install
):# 安装单个包 uv pip install flask # 从 requirements 文件安装 uv pip install -r requirements.txt # 可以同时指定多个文件 uv pip install -r requirements.txt -r requirements-dev.txt # 安装当前项目 (以可编辑模式) uv pip install -e .
- Desinstalação de dependências (
uv pip uninstall
):uv pip uninstall flask # 从文件批量卸载 uv pip uninstall -r requirements-to-remove.txt
- Gerar uma lista de dependências (
uv pip freeze
):# 输出当前环境安装的所有包 (类似 pip freeze) uv pip freeze > requirements.lock.txt # 常用于生成锁定文件
- Compilar dependências (
uv pip compile
) (Recomendadorequirements
fluxo de trabalho):
Essa abordagem é semelhante àpip-tools
. O usuário mantém umrequirements.in
(que contém apenas dependências diretas) e, em seguida, use o arquivouv
Gerar a versão exata dorequirements.txt
Bloquear o arquivo.# requirements.in 内容示例: # flask # requests>=2.25 # 生成 requirements.txt uv pip compile requirements.in -o requirements.txt # 为开发环境编译 (假设有 requirements-dev.in) # uv pip compile requirements-dev.in -o requirements-dev.txt
- Ambiente sincronizado (
uv pip sync
):
Com base em um ou maisrequirements.txt
O conteúdo do arquivo é sincronizado com precisão com o ambiente virtual: os pacotes ausentes são instalados e os pacotes redundantes são removidos.# 同步主依赖和开发依赖 uv pip sync requirements.txt requirements-dev.txt
- Exibir pacotes instalados (
uv pip list
,uv pip show
,uv pip tree
):uv pip list # 列出已安装的包和版本 uv pip show flask # 显示 flask 包的详细信息 uv pip tree # 以树状结构显示依赖关系
Gerenciando as versões do Python (uv python
)
uv
Download, gerenciamento e seleção integrados Python
versão do recurso, semelhante à versão pyenv
. (Lembre-se de que isso pode ser feito por meio do UV_PYTHON_INSTALL_DIR
As variáveis de ambiente configuram esses Python
(posição de montagem)
- Lista de versões disponíveis e instaladas (
uv python list
):# 列出已安装和当前使用的版本 uv python list # 显示所有可供下载的补丁版本 # uv python list --all-versions # 只显示已安装的版本 uv python list --only-installed
- Instale a versão do Python (
uv python install
):# 安装最新的稳定版 (如果尚未安装) uv python install # 安装特定版本 uv python install 3.11.5 # 安装 3.10 系列的最新可用版 uv python install 3.10
uv
enviará o arquivoPython
Instale-o em seu diretório gerenciado (uv python dir
O caminho pode ser visualizado, sujeito aUV_PYTHON_INSTALL_DIR
impacto). - Desinstale a versão do Python (
uv python uninstall
):uv python uninstall 3.10.8 # 卸载 3.11 系列所有已安装版本 uv python uninstall 3.11
- Corrigida a versão do projeto Python (
uv python pin
):
Criar ou atualizar no diretório atual.python-version
que declara que o projeto deve usar o arquivoPython
Versão.uv python pin 3.11
além
uv venv
,uv run
,uv sync
e outros comandos encontrarão e usarão preferencialmente essa versão. - Localize o interpretador Python (
uv python find
):# 查找匹配 3.12 的 Python 解释器路径 uv python find 3.12
Gerenciar ferramentas globais (uv tool
)
uv
Pode ser algo como pipx
Como sempre, instale e execute o aplicativo global Python CLI
e isolar cada ferramenta em um ambiente separado para evitar conflitos de dependência. (Da mesma forma, o local de armazenamento das ferramentas pode ser alterado com o comando UV_TOOL_INSTALL_DIR
configuração da variável de ambiente)
- Ferramentas de execução (implementação ad-hoc, etc.)
uv tool run
talvezuvx
):
Faz o download temporário (se necessário) e executa a ferramenta e não a retém após a execução. Isso é muito útil para ferramentas de uso único.uvx
seruv tool run
A forma abreviada.# 运行 ruff 检查当前目录,临时下载 ruff uv tool run ruff check . # 使用简写 uvx uvx ruff check . # 如果命令名 (http) 和包名 (httpie) 不同,使用 --from uvx --from httpie http https://example.com
- Instalação de ferramentas globais (
uv tool install
):
Instale a ferramenta e suas dependências no diretóriouv
ambiente autônomo gerenciado e vincule seu executável ao caminho do usuário (pode ser necessário reiniciar o terminal ou configurar manualmente oPATH
(para poder chamá-lo diretamente). Isso é semelhante aopipx install
.uv tool install black uv tool install httpie
Uma vez instalado, ele pode, teoricamente, ser executado diretamente de qualquer lugar
black .
talvezhttp https://example.com
. - Listar as ferramentas instaladas (
uv tool list
):uv tool list
- Ferramenta de atualização (
uv tool upgrade
):uv tool upgrade black # 升级所有已安装工具 # uv tool upgrade --all
- Ferramentas de desinstalação (
uv tool uninstall
):uv tool uninstall black
- Visualize o diretório de instalação da ferramenta (
uv tool dir
):
demonstraruv
O caminho raiz em que as ferramentas globais e seus ambientes são armazenados (sujeito aoUV_TOOL_INSTALL_DIR
impacto).
Gerenciar o cache (uv cache
)
uv
Use o cache global para acelerar o download do pacote e o processo de compilação. (O local do cache pode ser acessado por meio do comando UV_CACHE_DIR
configuração da variável de ambiente)
- Limpar o cache (
uv cache clean
):
Excluir tudouv
Conteúdo armazenado em cache. Isso pode ser usado para resolver possíveis problemas de poluição do cache ou para liberar espaço em disco.uv cache clean
- Exibir o diretório de cache (
uv cache dir
):
Ver atualuv
O local onde o arquivo de cache está armazenado (sujeito aUV_CACHE_DIR
impacto).
Gerenciamento de projetos de script único
Para alguns widgets ou scripts simples, ouv
Oferece suporte a uma abordagem de gerenciamento muito leve: incorporação de metadados e dependências do projeto diretamente no Python
em um bloco de comentários especial no cabeçalho do script.
- Script de inicialização (
uv init --script
):# 创建一个名为 my_script.py 的脚本,并指定 Python 版本要求 uv init --script my_script.py --python ">=3.10"
Isso estará no
my_script.py
Um bloco de comentários semelhante ao seguinte é gerado no início do arquivo:#!/usr/bin/env python # /// script # requires-python = ">=3.10" # dependencies = [ # ] # /// import sys def main() -> None: print(f"Hello from {sys.argv[0]}!") if __name__ == "__main__": main()
- Adicionar/remover dependências de script (
uv add/remove --script
):
Pode ser usado diretamenteadd
talvezremove
ordem, em conjunto com o--script
para modificar a lista de dependências no cabeçalho do script.# 为 my_script.py 添加 requests 依赖 uv add --script my_script.py requests # 从 my_script.py 移除 requests 依赖 uv remove --script my_script.py requests
Esses comandos modificam diretamente o cabeçalho do arquivo de script
dependencies
Lista. - Execute o script (
uv run
):
Uso diretouv run
O script pode ser executado.uv run my_script.py
uv
lê automaticamente os metadados no cabeçalho do script, cria um ambiente virtual temporário sob demanda, instala as dependências declaradas nele e, em seguida, executa o script. Essa abordagem é ideal para distribuir um único script autônomoPython
Script da ferramenta.
Perspectivas e recomendações futuras
uv
É, sem dúvida, um projeto ambicioso e de crescimento extremamente rápido. Ele se baseia em Rust
Os benefícios de desempenho e a interface unificada e bem projetada prometem melhorar significativamente a Python
Pacote do desenvolvedor e experiência em gerenciamento de ambiente. Seus principais valores sãotemporesponder cantandoconforme.
(go ahead and do it) without hesitating uv
Relativamente novo, o ecossistema (por exemplo, integrações profundas de IDE, recursos de tutoriais de terceiros) ainda está crescendo rapidamente e os comandos ou comportamentos podem ser ligeiramente ajustados entre as versões devido à sua iteração ativa (recomenda-se ficar de olho no registro de alterações).
Mas, por enquanto.uv
A funcionalidade principal tem sido bastante estável e robusta.
sugestão:
- com relação ade entrada
Python
evento esportivoÉ altamente recomendável que a adoção direta deuv
. Ele oferece uma experiência de gerenciamento eficiente e renovadora desde o início. - Para aquelesSofrendo com as cadeias de ferramentas existentes (por exemplo
pip
+virtualenv
+pip-tools
(Combinado) complexidade ou problemas de desempenho que afetamde desenvolvedores e equipes.uv
é uma alternativa muito atraente e vale a pena investir tempo na avaliação e na migração para experimentá-la. - Para aqueles que estão usando profundamente o
Poetry
talvezPDM
e dependem de seus recursos avançados específicos (por exemplo, sistemas de plug-in complexos, gerenciamento de processos de liberação refinados), a migração pode exigir uma avaliação mais cuidadosa, ponderando osuv
A velocidade e a simplicidade que vêm com ele versus a possível perda de recursos específicos.
uv
está se tornando rapidamente Python
Uma força a ser considerada nos fluxos de trabalho de desenvolvimento, seu surgimento pode ser tão importante quanto o ruff
Por exemplo, no Python
A comunidade desencadeou uma nova rodada de inovação de ferramentas. Seu futuro merece nossa atenção contínua.