The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these libraries? If you install everything into your host python (e.g. python3.8) it’s easy to end up in a situation where two packages have conflicting requirements.
简答来说,virtualenv
提供的功能就是提供不同的环境给不同的项目,便于各个不同的项目的包管理.例如,项目 1 使用的 a 包的1.0 版本,项目 2 使用的是 a 包的 2.0 版本,这时候就需要 virtualenv 这样的工具帮助我们进行项目管理了.
安装&配置
在安装之前需要明确的是对于 mac 用户,系统自带的是 python2.*版本
但是 python2.*版本已经停止维护,因此需要我们自己安装 python3,推荐使用 brew 安装 python3.
同时 py2 版本千万不要去动!系统上有很多对 py2 的依赖,删除 py2 可能会造成不可挽回的后果,同时不是大神的话也不要尝试去修改 python 软连接,这样同样也会造成严重的后果.这里我们采用设置别名的方式来修改 Python的默认版本(仅在 shell 中).
设置默认 py 版本
查看py 版本:
1 | which python |
首先查看当前使用的 shell :
1 | echo $SHELL |
这里我用 zsh 替代了系统默认的 shell,所以输出为 zsh,所以我需要修改 .zshrc 文件.( 如果使用的是默认的 shell 的话,需要配置 ~/.bashrc
)
1 |
|
在最后添加一行
1 | # .zshrc |
:wq
保存以后,执行:
1 | . ./.zshrc |
验证:
1 |
|
接着才是正题:
安装 virtualenv
1 | pip3 install virtualenv |
在项目中使用
1 | cd/project |
这时会在项目根目录下添加一个 venv
文件夹.
如果使用的编辑器是 vscode 的话,编辑器会提醒我们切换到虚拟环境.
切换到虚拟环境之后,我们进入到虚拟环境:
1 | . ./venv/bin/active |
可以看到,flask 只被安装到当前项目环境中.