python虚拟环境解决方案总结
必要性
单台服务器能保证只运行一个服务的话,那么确实是可以直接装在系统上的。不是的话,就涉及到多个服务的依赖和兼容问题了。
比如一个系统里同时部署两个服务,一个是Django 1.4的,一个是Django 1.7的,怎么办?
上面这种还是比较直观的,有这种需求的时候,肯定就会知道去用virtualenv之类的,但是另外一种情况就更可怕。
需要同时部署A和B两个项目,A项目要用到a这个库,而a这个库又依赖于c这个库的1.0版本。同时呢,B项目需要用到b这个库,b又依赖于c的2.0版本,这时候如果都安装在系统上的话, 就不一定是哪个坏掉了。
补充两点。有了 virtualenv 之后你就可以把那个文件夹整体拷贝了,部署起来方便很多。而且如果都装系统里,想 pip freeze 出来 requirements 怎么办?没法办。所以必须得隔离出一个独立环境。
OS X 下的虚拟环境解决方案(conda)
-
安装 anaconda
-
更换 conda 源(只需一次)
#中科大 conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/ #清华 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes
-
在 anaconda 的 environments 界面中为项目创建一个独立的虚拟环境
(命令行方式管理conda 虚拟环境)
创建环境 conda create --name your_env_name 创建指定python版本的环境 conda create --name your_env_name python=2.7 conda create --name your_env_name python=3 conda create --name your_env_name python=3.5 列举当前所有环境 conda info --envs conda env list 复制某个环境 conda create --name new_env_name --clone old_env_name 删除某个环境 conda remove --name your_env_name --all
-
在终端进入上一步创建的虚拟环境,用 pip 安装依赖包.
source activate 环境名称 #进入某虚拟环境下 #退出当前环境 deactivate
-
在 pycharm 中的 interpreter 选择相应的conda 虚拟环境即可.路径在
/anaconda3/envs/虚拟环境名称/bin/python
-
分享conda环境:首先通过
activate target_env
要分享的环境target_env
,然后输入下面的命令会在当前工作目录下生成一个environment.yml
文件,conda env export > environment.yml1
小伙伴拿到
environment.yml
文件后,将该文件放在工作目录下,可以通过以下命令从该文件创建环境conda env create -f environment.yml
Linux线上用conda命令行管理虚拟环境
1、首先在所在系统中安装Anaconda。可以打开命令行输入conda -V检验是否安装以及当前conda的版本。
2、conda常用的命令。
1)conda list 查看安装了哪些包。
2)conda env list 或 conda info -e 查看当前存在哪些虚拟环境
3)conda update conda 检查更新当前conda
3、创建python虚拟环境。
使用 conda create -n your_env_name python=X.X(2.7、3.6等)命令创建python版本为X.X、名字为your_env_name的虚拟环境。your_env_name文件可以在Anaconda安装目录envs文件下找到。
4、使用激活(或切换不同python版本)的虚拟环境。
打开命令行输入python --version可以检查当前python的版本。
使用如下命令即可 激活你的虚拟环境(即将python的版本改变)。
Linux: source activate your_env_name(虚拟环境名称)
Windows: activate your_env_name(虚拟环境名称)
这是再使用python --version可以检查当前python版本是否为想要的。
5、对虚拟环境中安装额外的包。
使用命令conda install -n your_env_name [package]即可安装package到your_env_name中
6、关闭虚拟环境(即从当前环境退出返回使用PATH环境中的默认python版本)。
使用如下命令即可。
Linux: source deactivate
Windows: deactivate
7、删除虚拟环境。
使用命令conda remove -n your_env_name(虚拟环境名称) --all, 即可删除。
8、删除环境中的某个包。
使用命令conda remove --name your_env_name package_name 即可。
其他工具
autoenv
首次部署
项目主页的四种方式,经过我的macbook测试,brew安装的版本不支持离开目录自动退出虚拟环境。所以推荐用git方式安装
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。