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 出现SyntaxError: non-keyword arg after keyword arg错误解决办
这篇文章主要介绍了python 出现SyntaxError: non-keyword arg after keyword arg错误解决办法的相关资料,需要的朋友可以参考下2017-02-02
flask 使用 flask_apscheduler 做定时循环任务的实现
这篇文章主要介绍了flask 使用 flask_apscheduler 做定时循环任务的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-12-12


最新评论