使用 UV 创建 Python 虚拟环境

初学Python的人很快就会遇到一个常见问题:如何为不同项目管理不同的库而不造成混乱? 答案是:在项目中使用虚拟环境

本文将介绍如何使用uv工具创建项目,如何将虚拟环境与项目关联,并通过arXiv库进行实际示例,该库允许从著名的在线存档中搜索科学文章。我们将在Windows上进行这些操作,但在UbuntuMacOS或任何Linux发行版上,操作步骤类似。我们将使用一个示例程序,python-project-arxiv,我已在GitHub上提供。


什么是虚拟环境?

一个虚拟环境Python隔离副本,包含自己的包,与系统全局安装的包分开。
主要优点包括:

  • 避免不同项目所需的Python版本和库之间的冲突;
  • 保持工作环境的整洁和可重复性;
  • 能够轻松与他人共享项目的依赖项。

实际上,对于每个项目,可以有一个隔离的环境,其中安装了一个特定版本的Python,以及仅该项目所需的库和版本。

虚拟环境处于活动状态时,每个pythonpip命令仅指向该环境,而不是系统的Python,因此安装的库仅与虚拟环境相关。

 


为什么使用 uv?

工具uv(一个包和项目管理器)使创建虚拟环境的过程更快更直观。

使用uv可以:

  • 创建和管理虚拟环境;
  • 使用pip的快速替代方案安装包;
  • 直接在环境中运行脚本,即使没有手动激活它。

uv的替代方案可以是:使用venv(虚拟环境)+ pip(安装包)或使用Anaconda,这是一套更复杂的工具,特别适用于数据科学机器学习应用。

 


安装 uv

要安装uv,只需运行以下命令之一:

  • 在 Linux/macOS 上
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • 在 Windows(PowerShell)上
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    

安装后,uv命令将在终端中可用,因此可以使用uv --version命令检查安装的版本。

 


使用 uv 创建项目

现在创建一个带有虚拟环境的项目。在此阶段,我们还可以指定要使用的Python版本,例如3.11

  1. 在命令行中,例如在WindowsPowerShell中,输入以下命令创建项目的基本结构,即一组文件和文件夹:
    uv init python-project-arxiv --python '>=3.11'

  2. 使用以下命令创建与项目关联的虚拟环境(将创建.venv文件夹):
    uv sync
  3. 在项目中添加所需的库,在本例中为arxiv(将更新pyproject.toml文件):
    uv add arxiv
  4. 我们可以尝试运行以下命令来测试一切是否正常:
    uv run main.py
  5. 此时,我们可以在main.py文件中编写所需的代码,然后为了方便,将其重命名为search_articles.py
  6. 编写程序后,可以运行以下命令来执行它:
    uv run search_articles.py

在下面的截图中可以看到,第一个命令使用的是系统的Python,而第二个命令使用的是虚拟环境内部的

 


如何使用 uv 创建的项目

现在假设我们已将项目保存到GIT存储库中,并希望:下载项目重新创建虚拟环境在其中执行程序

要使用的命令如下:

git clone https://github.com/ilclaudio/python-project-arxiv.git
cd .\python-project-arxiv\
uv sync
uv run .\search_articles.py

请注意,在使用的PC上,必须安装Pythonuv,但Python的版本可以与项目的不同。项目所需的Python将安装在虚拟环境中。

 


什么是 arXiv 库?

arXiv [4]是一个Python库,允许查询arXiv.org [3],这是一个在线科学文章存档,广泛用于数学、物理学、计算机科学和其他学科。使用arXiv可以按主题搜索文章,过滤结果并下载元数据,如标题、作者和链接。

 


实际示例:使用 arXiv 搜索文章

如果不需要创建项目,可以使用以下命令创建一个临时虚拟环境:

mkdir arxiv-example
cd arxiv-example
uv venv --python 3.11
uv pip install arxiv
.venv\Scripts\Activate.ps1

最后一个命令在PowerShell上激活虚拟环境,在Linux上命令为source .venv/bin/activate,在Windows shell上命令为:.venv\Scripts\activate.bat

激活虚拟环境并安装arXiv后,打开Python shell,尝试搜索三个关于RAG系统的科学文章,并按相关性排序。

然后使用以下命令打开提示符:

python

然后复制并粘贴以下代码:

import arxiv
client = arxiv.Client()

search = arxiv.Search(
  query="RAG systems",
  max_results=3,
  sort_by=arxiv.SortCriterion.Relevance
)

for result in client.results(search):
  print(result.title, "-", result.entry_id)

Enter后,将获得与“RAG systems”主题相关的最新文章列表,并附有它们在arXiv上的页面链接。

使用deactivate命令可以退出虚拟环境。

 


从脚本执行搜索

当然,可以在Python提示符下进行测试,但随后需要编写脚本。

例如,可以在papers.py文件中编写以下代码:

import arxiv
client = arxiv.Client()

search = arxiv.Search(
  query="RAG systems",
  max_results=3,
  sort_by=arxiv.SortCriterion.Relevance
)

for result in client.results(search):
  print(result.title, "-", result.entry_id)

然后在PowerShell中执行:

python papers.py

或者,即使没有激活环境:

uv run python papers.py

保存和重用环境

安装库后,可以使用以下命令在虚拟环境中保存列表:

uv pip freeze > requirements.txt

同样,已有一个包含requirements.txt文件的项目文件夹,可以使用以下两个命令在虚拟环境中安装所有库:

cd mio-progetto
uv venv
uv pip install -r requirements.txt

requirements.txt文件用于冻结重现项目的Python环境,因为它包含直接依赖项(显式安装的)和间接依赖项(包所需的库)。

 


结论

虚拟环境是以有序和专业的方式使用Python的基本工具。使用uv,它们的管理变得简单快捷。arXiv库只是一个示例,说明虚拟环境如何允许您在不同库中进行实验,而不会导致冲突或“搞乱”您的全局系统。本文中介绍的两种使用uv的方法是可替代的,可以说第一种是第二种的进化,允许更有序地管理项目。

 

来源和参考

  1. 使用 UV 安装和管理 PythonAstral官方网站。
  2. Anaconda:官方网站。
  3. arXiv 存档:在线科学文章,Cornell University
  4. Python arxiv 库
  5. 示例程序:python-project-arxiv,GitHub

 

*** 注意:本文通过使用 n8n 和 OpenAI 的自动流程翻译。

8 months ago

Leave a Reply

Your email address will not be published. Required fields are marked *

评论审核已启用。您的评论可能需要一段时间后才能被显示。