<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>虚拟环境 on Shimmer の blog</title><link>https://lkjing2021345.github.io/tags/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83/</link><description>Recent content in 虚拟环境 on Shimmer の blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Tue, 22 Sep 2026 21:46:53 +0800</lastBuildDate><atom:link href="https://lkjing2021345.github.io/tags/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83/index.xml" rel="self" type="application/rss+xml"/><item><title>虚拟环境配置教学</title><link>https://lkjing2021345.github.io/post/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E6%95%99%E5%AD%A6/</link><pubDate>Tue, 22 Sep 2026 21:46:53 +0800</pubDate><guid>https://lkjing2021345.github.io/post/%E8%99%9A%E6%8B%9F%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE%E6%95%99%E5%AD%A6/</guid><description>&lt;img src="https://lkjing2021345.github.io/img/fufu.jpg" alt="Featured image of post 虚拟环境配置教学" /&gt;&lt;p&gt;虚拟环境是一个我们自己在计算机上创造出来的环境，有点像虚拟机之于主机（但是虚拟环境并未隔离操作环境），它就像是在一个大别墅（操作系统）里面开了一个小房子，有自己独立 pip 包等等，而在python项目工程实践中，虚拟环境是非常重要的，它可以避免第三方包污染解释器并且在 Linux 环境下成功进行开发（如果你是一个对 Linux 比较熟悉的人，会发现，在部分 Linux 发行版（如较新的 Debian/Ubuntu）里，系统 Python 受 PEP 668 保护，直接 pip install 会被拒绝，这个时候最规范的做法就是开一个虚拟环境了），而且很多人会发现，有些包在全局环境变量下是不会自动加载进 PATH 变量里的，而激活 venv 的时候会自动将 Scripts\ 加载进 PATH 里面，使得你可以直接敲 django-admin 、 black 等等命令而不需要使用 python -m 。&lt;/p&gt;
&lt;h2 id="venv环境管理器"&gt;venv环境管理器
&lt;/h2&gt;&lt;p&gt;我们在python里开虚拟环境，主要是靠这样一行命令。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python -m venv .venv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个命令会在当前目录下创建一个.venv文件夹，并自动在其中配置好虚拟环境所需要的一切，在这之后，你只需要&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.venv\Scripts\Activate.ps1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;WSL&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;source .venv/Scripts/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;source .venv/bin/activate
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;虚拟环境就被激活了，之后你就可以通过pip等命令安装这个虚拟环境所需要的包了。&lt;/p&gt;
&lt;p&gt;当然，如果你嫌麻烦，又恰好是一名pycharm使用者（当然笔者并不是很推荐使用pycharm，原因很简单，pycharm太厚重了，启动速度比vscode慢一截，导致我体验感很差，但是如果你的电脑配置很高就无需考虑这些），你可以在pycharm右下角的interpreter配置当中设置,Add interpreter的时候有一个Type选项， 在其中选择Virtualenv，这样每次开启pycharm时，其自带的终端就会自动进入虚拟环境。&lt;/p&gt;
&lt;p&gt;当然，对于vscode的使用者，我们也有一套方案，并且可以说比pycharm的方案更加简便：在你安装了 Python 扩展之后，你只需要打开命令面板，输入Python: Create Environment，配置好基本的解释器版本和依赖安装之后，然后在 Settings 里把 python.useEnvironmentsExtension 勾上， Ctrl+Shift+P → Developer: Reload Window 重载后在侧边栏的python视图里面可以看到有Environment Managers ，点+号直接创建，后续和pycharm就一样可以直接进入虚拟环境了。&lt;/p&gt;
&lt;h2 id="环境与包管理器"&gt;环境与包管理器
&lt;/h2&gt;&lt;p&gt;虚拟环境固然方便，但是当我们开发时间长了之后，未免会发现一边使用 venv 来管理虚拟环境，一边使用 pip 来管理包太过于繁琐了，所以程序员们研究出了一个环境管理和包管理器的集合体。&lt;/p&gt;
&lt;p&gt;常用的环境与包管理器有conda、uv等等，在这里我比较推荐uv，和前面原因差不多，conda是一个非常重量级的环境与包管理器（不过，可能conda的开发者也意识到了这一点，所以有 micromamba 作为更加轻量的替代方案），当然，还是会有不少人用到它的，例如研究&lt;strong&gt;数据科学&lt;/strong&gt;和&lt;strong&gt;机器学习&lt;/strong&gt;的人们，但是如果你进行的是一般的后端项目开发，uv是足够了的。&lt;/p&gt;
&lt;p&gt;uv的安装方法非常简单：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pipx install uv
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当然，如果你阅读过官方手册，会发现它更推荐另一种更加复杂的安装方式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;powershell -ExecutionPolicy ByPass -c &lt;span style="color:#e6db74"&gt;&amp;#34;irm https://astral.sh/uv/install.ps1 | iex&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当然，&lt;strong&gt;pip install uv&lt;/strong&gt;也是一种安装方式，但是他会污染当前解释器环境，所以不推荐。&lt;/p&gt;
&lt;p&gt;以上都是命令行的安装方法，对于更喜欢图形化界面的大家，pycharm 和 vscode 也分别提供了一种解决方案。&lt;/p&gt;
&lt;figure&gt;&lt;img src="https://lkjing2021345.github.io/illustration/pycharm_uv.png"&gt;&lt;figcaption&gt;
			&lt;h4&gt;pycharm 中的 uv 安装方法&lt;/h4&gt;
		&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;如图，pycharm可以在这个界面选择 install uv via pip 进行 uv 的安装。&lt;/p&gt;
&lt;p&gt;VS Code 装好 uv 后会在后台自动用它来加速建环境和装包，无需（很遗憾的是，也不能）在 GUI 里单独选 uv。&lt;/p&gt;
&lt;p&gt;接下来介绍一下uv的使用方法。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv init myproj &lt;span style="color:#75715e"&gt;# 建项目&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv add requests &lt;span style="color:#75715e"&gt;# 加依赖（自动建/更新 .venv 和 uv.lock）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv add --dev pytest &lt;span style="color:#75715e"&gt;# 开发依赖&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv sync &lt;span style="color:#75715e"&gt;# 按锁文件同步环境&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv run main.py &lt;span style="color:#75715e"&gt;# 在项目环境里跑&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv lock --upgrade &lt;span style="color:#75715e"&gt;# 升级锁定版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;当然，uv 官方还做了对 pip 的兼容层优化。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv venv &lt;span style="color:#75715e"&gt;# 建裸 venv&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv pip install requests &lt;span style="color:#75715e"&gt;# 和 pip 安装包没有区别&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv pip list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv python install 3.12 &lt;span style="color:#75715e"&gt;# 装指定 Python 版本&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;uv python pin 3.12
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这就是基本的uv使用方法了，后续更加高阶的用法读者可以自己查阅官方手册，本博客只做介绍引入。&lt;/p&gt;
&lt;p&gt;然后是基本的conda的安装和使用方法（建议初学者安装 miniconda，而不是 anaconda）：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda create -n myenv python&lt;span style="color:#f92672"&gt;=&lt;/span&gt;3.12
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda activate myenv
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda install numpy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda install -c conda-forge somepkg
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda env list
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda deactivate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda remove -n myenv --all
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;顺便一提，conda 相对于 uv 更具优势的一点是它不止于 python，而适配于多个语言。&lt;/p&gt;</description></item></channel></rss>