虚拟环境 之前对python虚拟环境有所了解,也会基本的使用,但是工作的时候经常碰到virtualenv、pyenv、pipenv这三个不同的工具,接触了这么多虚拟环境工具,让我逐渐的对python虚拟环境又模糊了起来,现在,我对这三个虚拟环境工具简单梳理一下,进行一下区分,方便我们对python的虚拟环境有更加清晰的认识。
虚拟环境是用于依赖项管理和项目隔离的python工具,它可以将python程序和pip包管理工具安装在本地的隔离目录中(非全局安装)。在实际开发中,不同项目可能需要的python版本和项目的第三方依赖包的版本不同,因此需要使用到虚拟环境来管理不同的项目
PyenvPyenv通过创建一个指定的python版本的环境,然后在此环境上安装相应的包。pyenv通过在linux系统变量PATH头部插入shims路径来实现对python版本的控制.
Pyenv安装`注:由于Pyenv只支持linux系统,所以只提供linux环境下的安装
1.下载pyenv源码到用户家目录
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
2.将pyenv 的路径写入配置文件
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo -e 'if command -v pyenv 1>/dev/null 2>&1; thenn eval "$(pyenv init -)"nfi' >> ~/.bashrc exec $SHELL (重启shell,使路径更改生效)
3.检查是否安装成功
pyenv versionsPyenv使用
Pyenv只会管理通过Pyenv安装的Python版本,你自己在Python官网上下载的直接安装的Pyenv并不能被管理!!!同样除了系统自带的python包外,其他直接安装的python包是识别不出来的。
常用命令# 查看可安装的Python版本 pyenv install --list # 安装特定版本的Python pyenv install 3.6.1 # 查看pyenv已安装的Python版本列表 pyenv versions # 查看当前使用的Python版本 pyenv version # 卸载指定的版本 pyenv uninstall 3.6.1 # 切换本地Python版本 当前目录生效 pyenv local system pyenv local 3.6.1 # 切换全局的Python版本 整个系统生效 pyenv global 3.6.1 # 取消设置 pyenv local --unsetpyenv-virtualenv
pyenv创建新的版本时,实际上是拷贝整个python环境。而virtualenv与此相反,它是使用符号链接来减少virtualenv的规模。如果你担心没了python虚拟环境的话,有一个插件可以解决——pyenv-virtualenv。这个插件为pyenv添加了完整的虚拟环境的功能,可以用来创建基于同个Python版本的不同虚拟环境。
安装git clone https://gitee.com/krypln/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc exec $SHELL基本使用
# 创建虚拟环境 pyenv virtualenv 版本号 虚拟环境名 例:pyenv virtualenv 3.6.1 test # 列出现有virtualenvs pyenv virtualenvs # 激活虚拟环境 pyenv activate mypro_27 # 退出虚拟环境 pyenv deactivatevirtualenv
virtualenv通过创建一个基于本地python版本的虚拟环境,将我们所需的依赖安装进去的。virtualenv会把虚拟环境安装在当前目录下,可进入虚拟环境目录进行激活和退出。
tips:pycharm默认使用virtualenv管理虚拟环境
linux下安装1.直接使用linux安装命令
# ubuntu下安装 sudo apt-get install python-virtualenv # centos下安装 sudo yum install python-virtualenv
2.检查是否安装成功
virtualenv --versionwindows下安装
pip install virtualenvvirtualenv使用
# 创建虚拟环境 会在当前目录下创建对应名称文件夹 virtualenv [虚拟环境名称] 例:virtualenv test # 默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境 virtualenv --no-site-packages [虚拟环境名称] # 指定python解释器 virtualenv -p /usr/bin/python2.7 test # 激活虚拟环境 source ./test/bin/activate # 退出虚拟环境 deactivatevirtualenvwrapper
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
- 将所有虚拟环境整合在一个目录下
- 管理(新增,删除,复制)虚拟环境
- 切换虚拟环境
确保virtualenv 已经安装了
pip3 install virtualenvwrapper export WORKON_HOME=~/Envs #设置环境变量 mkdir -p $WORKON_HOME #创建虚拟环境管理目录 # 如果遇到报错“No module named virtualenvwrapper” 进行以下步骤 VIRTUALENVWRAPPER_PYTHON="$(command which python3)" export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 find / -name virtualenvwrapper.sh #找到virtualenvwrapper.sh的路径 source 路径(例:/usr/local/python3/bin/virtualenvwrapper.sh) #激活virtualenvwrapper.shwindows下安装
# 在Windows中,WORKON_HOME默认的路径是 %USERPROFILE%Envs pip install virtualenvwrapper-win基本使用
# 创建虚拟环境(会在统一的env目录创建虚拟环境) mkvirtualenv project_env # 指定python解释器 mkvirtualenv env --python=python2.7 # 激活指定虚拟环境 workon project_env # 退出虚拟环境 deactivate # 删除虚拟环境 rmvirtualenv project_env # 列举所有的虚拟环境 lsvirtualenv # 导航到当前虚拟环境目录 便于查看site-packages cdvirtualenv # 同上 直接进入site-packages目录 cdsitepackages # 显示site-packages中的内容 lssitepackagespipenv
pipenv相当于是pip和virtualenv的组合体,它基于Pipfile的依赖记录方式,用于替代旧的记录方式requirements.txt。pipenv会自动帮你管理虚拟环境和依赖文件,并且提供一系列命令和选项来帮助你实现各种依赖和环境管理相关的 *** 作。
pipenv安装1.直接使用pip命令安装
pip3 install pipenv
2.检查是否安装成功
pipenv --versionpipenv使用
pipenv通过Pipfile文件和Pipfile.lock文件来管理虚拟环境
使用pipenv创建虚拟环境,自动生成一个随机的虚拟环境目录名。如果在windows系统下执行命令,生成的虚拟环境在C:Users用户名.virtualenvs文件夹下。
环境管理# -----环境管理----- # 创建虚拟环境(进入项目文件夹) 会生成Pipfile文件和Pipfile.lock文件 并进入到虚拟环境中 pipenv install # 指定python版本 下面三种版本格式都行 # 如果不指定版本,会使用系统默认的已安装的已经配置在环境变量中的python版本,不能指定未安装的版本 pipenv install --python 3 pipenv install --python 3.6 pipenv install --python 2.7.14 # 激活虚拟环境 pipenv shell # 获取当前虚拟环境的位置 pipenv --venv包管理
# 安装包 pipenv install requests # 查看已经安装的包 pipenv graph # 指定版本号 pipenv install requests==2.13.0 # 安装仅供开发使用的包 -d 或--dev pipenv install -d requests # 卸载包 # 卸载所有包--all 卸载所有开发包 --all-dev pipenv uninstall requests # 更新包 # 查看所有需要更新的包 pipenv update --outdated # 更新所有包 pipenv update # 更新指定包 pipenv update <包名>requirements.txt
# 通过requirements.txt文件安装包 (如果项目中有requirements.txt文件,pipenv会在安装的时候自动导入) pipenv install -r path/requirements.txt # 导出requirements.txt文件 --dev 只导出开发用的包 pipenv lock -r自动安装Python
pipenv只能搜索系统中已经安装的Python版本,对于未安装的版本,会提示错误,如果你已经安装了pyenv,pipenv会自动发现pyenv,然后直接询问你是否要安装。
Pipfile此文件用于维护项目的python版本、开发依赖、生成依赖和pip源。
[[source]] # pip源配置 url = "https://pypi.org/simple" verify_ssl = true name = "pypi" [packages] # 生产环境使用的包都在这里 [dev-packages] # 开发环境使用的包都在这里 [requires] # python版本指定 python_version = "3.7"三者区别
pyenv不支持windows,侧重在python 解释器版本管理上,virtualenv没有python版本管理功能, *** 作较为简单,pipenv侧重于python包的管理。
日常使用在windows下我们可以使用virtualenv和pipenv。在linux下,我们可以根据根据自己的具体场景选择合适的工具。
参考:
- https://www.jianshu.com/p/60f361822a7e
- https://cloud.tencent.com/developer/news/39104
- https://www.cnblogs.com/morries123/p/8568223.html
- https://www.cnblogs.com/freely/p/8022923.html
- https://blog.csdn.net/wujialaoer/article/details/83007716
- https://www.cnblogs.com/chenxiaomeng/p/14823112.html
本文原创于我的个人博客:www.zhinian20.com
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)