Python虚拟环境venv使用说明详解

 更新时间:2026年05月28日 09:36:27   作者:一勺菠萝丶  
在macOS上使用Homebrew安装的Python时,如果直接执行,可能会遇到报错,这是因为当前Python环境是由Homebrew管理的,系统不建议直接往全局Python环境里安装第三方依赖,否则可能会把Python环境弄乱,所以本文给大家介绍了Python虚拟环境venv使用说明

一、这个问题是什么?

在 macOS 上使用 Homebrew 安装的 Python 时,如果直接执行:

bash pip install xxx

可能会遇到类似下面的报错:

bash error: externally-managed-environment

这是因为当前 Python 环境是由 Homebrew 管理的,系统不建议直接往全局 Python 环境里安装第三方依赖,否则可能会把 Python 环境弄乱。

正确做法是:在项目里创建一个独立的 Python 虚拟环境。

虚拟环境可以理解为:

每个项目都有自己单独的一套 Python 依赖,不影响系统,也不影响其他项目。

二、第一次使用:创建虚拟环境

第一次进入项目时,需要先创建虚拟环境。

1. 进入项目目录

假设你的项目文件夹叫 my-project,先进入这个目录:

bash cd my-project

例如:

bash cd /Users/你的用户名/Desktop/my-project

2. 创建虚拟环境

执行:

bash python3 -m venv .venv

这条命令的意思是:

  • python3:使用 Python 3
  • -m venv:使用 Python 自带的虚拟环境模块
  • .venv:创建一个名为 .venv 的虚拟环境文件夹

创建成功后,项目目录里会多出一个 .venv 文件夹。

注意:
这一步只需要第一次执行一次。

以后只要 .venv 文件夹还在,就不需要重复创建。

3. 激活虚拟环境

创建完成后,需要激活虚拟环境:

bash source .venv/bin/activate

激活成功后,终端前面一般会出现:

bash (.venv)

例如:

bash (.venv) user@MacBook my-project %

看到 (.venv) 就说明当前已经进入虚拟环境了。

4. 安装项目依赖

如果项目里有 requirements.txt,执行:

bash python3 -m pip install -r requirements.txt

如果项目是离线安装,并且有本地依赖包目录,比如 packages,可以执行:

bash python3 -m pip install --no-index --find-links ./packages -r requirements.txt

如果项目有自己的安装脚本,例如:

bash ./安装依赖.sh

或者:

bash ./install.sh

也可以在激活虚拟环境后运行。

5. 启动项目

依赖安装完成后,再启动项目。

例如:

bash ./启动服务.sh

或者根据项目实际情况执行:

bash python3 app.py
bash python3 main.py
bash npm run dev

具体启动命令要看项目提供的说明。

三、以后每次打开终端都怎么做?

以后不需要重新创建 .venv。

每次重新打开终端,只需要做这几步:

1. 进入项目目录

bash cd 项目目录

例如:

bash cd /Users/你的用户名/Desktop/my-project

2. 激活虚拟环境

bash source .venv/bin/activate

看到终端前面出现 (.venv),说明已经进入虚拟环境。

3. 启动服务

bash ./启动服务.sh

如果项目启动命令不是这个,就换成项目真实的启动命令。

四、完整示例

假设项目在桌面上的 my-project 文件夹里。

第一次使用

bash cd ~/Desktop/my-project python3 -m venv .venv source .venv/bin/activate python3 -m pip install -r requirements.txt ./启动服务.sh

以后每次使用

bash cd ~/Desktop/my-project source .venv/bin/activate ./启动服务.sh

五、为什么每次都要 source .venv/bin/activate?

因为:

bash python3 -m venv .venv

是创建虚拟环境。

而:

bash source .venv/bin/activate

是激活虚拟环境。

创建虚拟环境只需要一次,但激活虚拟环境是针对当前终端窗口生效的。

也就是说:

  • 你打开一个终端,需要激活一次
  • 你关闭终端后,虚拟环境状态就没了
  • 下次重新打开终端,需要再次执行 source .venv/bin/activate

虚拟环境文件夹 .venv 还在,不代表当前终端已经进入了虚拟环境。

六、怎么判断自己有没有进入虚拟环境?

看终端前面有没有:

bash (.venv)

例如:

bash (.venv) user@MacBook my-project %

如果有,说明已经进入虚拟环境。

如果没有,说明还没有进入,需要执行:

bash source .venv/bin/activate

七、怎么退出虚拟环境?

如果想退出虚拟环境,执行:

bash deactivate

退出后,终端前面的 (.venv) 会消失。

八、常见问题

1. 我已经创建过 .venv,还需要重新创建吗?

不需要。

只要项目目录里的 .venv 文件夹还在,就不用重新执行:

bash python3 -m venv .venv

只需要执行:

bash source .venv/bin/activate

2. 我关掉终端后,为什么又没有 (.venv) 了?

这是正常的。

虚拟环境的激活状态只对当前终端窗口有效。

关闭终端后,下次打开需要重新执行:

bash source .venv/bin/activate

3. 为什么我激活虚拟环境后,pip install 就不报错了?

因为依赖会安装到项目自己的 .venv 文件夹里,而不是安装到 Homebrew 管理的全局 Python 环境里。

这样不会破坏系统 Python,也不会影响其他项目。

4. 如果提示没有 requirements.txt 怎么办?

说明项目可能没有提供 requirements.txt 文件。

可以先查看项目目录里有没有类似文件:

bash ls

常见依赖文件可能叫:

bash requirements.txt pyproject.toml Pipfile environment.yml

如果都没有,就需要看项目说明文档,确认应该安装哪些依赖。

5. 如果 source .venv/bin/activate 报错怎么办?

可能是 .venv 还没有创建,或者你不在项目目录里。

可以先检查当前目录:

bash pwd

再查看有没有 .venv 文件夹:

bash ls -a

如果没有 .venv,说明还没创建,需要执行:

bash python3 -m venv .venv

然后再执行:

bash source .venv/bin/activate

九、可以让启动脚本自动进入虚拟环境吗?

可以。

如果你的项目每次都需要先激活虚拟环境再启动,可以把启动脚本改成自动激活。

例如编辑 启动服务.sh:

bash #!/bin/bash cd “$(dirname “$0”)” source .venv/bin/activate python3 app.py

其中:

bash python3 app.py

需要替换成你项目真实的启动命令。

比如你的项目是:

bash python3 main.py

那就写成:

bash #!/bin/bash cd “$(dirname “$0”)” source .venv/bin/activate python3 main.py

这样以后只需要执行:

bash ./启动服务.sh

脚本就会自动进入虚拟环境并启动项目。

十、推荐记住的三条命令

第一次创建虚拟环境:

bash python3 -m venv .venv

每次进入虚拟环境:

bash source .venv/bin/activate

退出虚拟环境:

bash deactivate

十一、最简单的记忆方式

第一次:

bash cd 项目目录 python3 -m venv .venv source .venv/bin/activate 安装依赖 启动项目

以后每次:

bash cd 项目目录 source .venv/bin/activate 启动项目

一句话总结:

.venv 只需要创建一次,但每次重新打开终端,都需要重新激活一次。

以上就是Python虚拟环境venv使用说明详解的详细内容,更多关于Python虚拟环境venv使用的资料请关注脚本之家其它相关文章!

相关文章

  • python经典百题之画圆形多种解决办法

    python经典百题之画圆形多种解决办法

    在Python中,您可以使用各种库和工具来绘制图形,其中包括绘制圆形,下面这篇文章主要给大家介绍了关于python经典百题之画圆形的多种解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • python中的hashlib模块使用实例

    python中的hashlib模块使用实例

    这篇文章主要介绍了python中的hashlib模块使用实例,hashlib是一个提供字符串加密功能的模块,包含MD5和SHA的算法,MD5和SHA是摘要算法,文中以实例代码讲解hashlib模块的基本用法,需要的朋友可以参考下
    2023-08-08
  • PyTorch预训练的实现

    PyTorch预训练的实现

    这篇文章主要介绍了PyTorch预训练的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 如何利用Python实现简易的音频播放器

    如何利用Python实现简易的音频播放器

    这篇文章主要介绍了如何利用Python实现简易的音频播放器,需要用到的库有pygame和tkinter,实现音频播放的功能,供大家学习参考,希望对你有所帮助
    2022-03-03
  • python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法

    python 出现SyntaxError: non-keyword arg after keyword arg错误解决办

    这篇文章主要介绍了python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法的相关资料,需要的朋友可以参考下
    2017-02-02
  • Python的输出格式化和进制转换介绍

    Python的输出格式化和进制转换介绍

    大家好,本篇文章主要讲的是Python的输出格式化和进制转换介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • Python使用scipy.fft进行大学经典的傅立叶变换

    Python使用scipy.fft进行大学经典的傅立叶变换

    傅里叶变换是在高数是一个很重要的知识点,本文将介绍Python使用scipy.fft进行大学经典的傅立叶变换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • flask 使用 flask_apscheduler 做定时循环任务的实现

    flask 使用 flask_apscheduler 做定时循环任务的实现

    这篇文章主要介绍了flask 使用 flask_apscheduler 做定时循环任务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Python实现服务端渲染SSR的示例代码

    Python实现服务端渲染SSR的示例代码

    服务端渲染是一种常见的技术策略,特别是在需要改善网站的搜索引擎优化(SEO)和首屏加载时间的场景下,本文将介绍如何利用 Python 实现 SSR,感兴趣的可以了解下
    2024-02-02
  • Python组合数据类型使用及说明

    Python组合数据类型使用及说明

    本文详细介绍了Python中列表、元组和字典的基本操作,包括创建、遍历、修改、删除元素,以及常见的内置函数和方法,同时,还涉及了字符串和列表之间的相互转换
    2026-03-03

最新评论