python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python虚拟环境venv使用

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

作者:一勺菠萝丶

在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

这条命令的意思是:

创建成功后,项目目录里会多出一个 .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

是激活虚拟环境。

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

也就是说:

虚拟环境文件夹 .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使用的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文