初学Python的人很快就会遇到一个常见问题:如何为不同项目管理不同的库而不造成混乱? 答案是:在项目中使用虚拟环境。
本文将介绍如何使用uv工具创建项目,如何将虚拟环境与项目关联,并通过arXiv库进行实际示例,该库允许从著名的在线存档中搜索科学文章。我们将在Windows上进行这些操作,但在Ubuntu、MacOS或任何Linux发行版上,操作步骤类似。我们将使用一个示例程序,python-project-arxiv,我已在GitHub上提供。

什么是虚拟环境?
一个虚拟环境是Python的隔离副本,包含自己的包,与系统全局安装的包分开。
主要优点包括:
- 避免不同项目所需的Python版本和库之间的冲突;
- 保持工作环境的整洁和可重复性;
- 能够轻松与他人共享项目的依赖项。
实际上,对于每个项目,可以有一个隔离的环境,其中安装了一个特定版本的Python,以及仅该项目所需的库和版本。
当虚拟环境处于活动状态时,每个python和pip命令仅指向该环境,而不是系统的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:
- 在命令行中,例如在Windows的PowerShell中,输入以下命令创建项目的基本结构,即一组文件和文件夹:
uv init python-project-arxiv --python '>=3.11'

- 使用以下命令创建与项目关联的虚拟环境(将创建.venv文件夹):
uv sync
- 在项目中添加所需的库,在本例中为arxiv(将更新pyproject.toml文件):
uv add arxiv
- 我们可以尝试运行以下命令来测试一切是否正常:
uv run main.py
- 此时,我们可以在main.py文件中编写所需的代码,然后为了方便,将其重命名为search_articles.py。
- 编写程序后,可以运行以下命令来执行它:
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上,必须安装Python和uv,但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的方法是可替代的,可以说第一种是第二种的进化,允许更有序地管理项目。
来源和参考
- 使用 UV 安装和管理 Python,Astral官方网站。
- Anaconda:官方网站。
- arXiv 存档:在线科学文章,Cornell University。
- Python arxiv 库。
- 示例程序:python-project-arxiv,GitHub。
*** 注意:本文通过使用 n8n 和 OpenAI 的自动流程翻译。
