前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python虚拟环境

python虚拟环境

作者头像
神秘的寇先森
发布2020-02-19 11:02:04
1.2K0
发布2020-02-19 11:02:04
举报
文章被收录于专栏:Java进阶之路Java进阶之路
优点
  • 使不同应用开发环境独立
  • 环境升级不影响其他应用,也不会影响全局的python环境
  • 可以防止系统中出现包管理混乱和版本的冲突
常用的市场上管理 Python 版本和环境的工具
  • pyenv:简单的 Python 版本管理工具。
  • virtualenv:创建独立 Python 环境的工具。
  • virtualenvwrapper:virtualenv 的一组扩展。
virtualenv

由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。

  • 安装
代码语言:javascript
复制
pip3 install virtualenv
# 检查版本
virtualenv --version

由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录

  • 创建
代码语言:javascript
复制
# 准备目录并进行
$ mkdir -p /home/wangbm/Envs
$ cd !$

# 创建虚拟环境(按默认的Python版本)
# 执行完,当前目录下会有一个my_env01的目录
$ virtualenv my_env01

# 你也可以指定版本
$ virtualenv -p /usr/bin/python2.7 my_env01
$ virtualenv -p /usr/bin/python3.6 my_env02

# 你肯定觉得每次都要指定版本,相当麻烦吧?
# 在Linux下,你可以把这个选项写进入环境变量中
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc

创建完全隔离的Python环境,实质是创建了一个文件夹,我们的操作都是在这个目录里面进行的。 默认情况下,virtualenv会引用系统python环境中 site-­packages 中的库,并将其复制到虚拟python环境的库中。我们可以设置--no-site-packages 参数取消对系统Python库的引用,以此来创建一个完全纯净的python环境。

代码语言:javascript
复制
virtualenv --no-site-packages myenv
  • 进入/退出
代码语言:javascript
复制
cd /home/wangbm/Envs
# 激活虚拟环境
$ source my_env01/bin/activate
# 退出虚拟环境
$ deactivate
  • 删除 删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
代码语言:javascript
复制
cd /home/wangbm/Envs
$ rm -rf my_env01

注意: 创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。

如果你需要和全局环境使用相同的第三方包。可以使用如下方法:

代码语言:javascript
复制
# 导出依赖包
$ pip freeze > requirements.txt

# 安装依赖包
$ pip install -r requirements.txt 
virtualenvwrapper

virtualenv 虽然已经相当好用了,可是功能还是不够完善。

你会发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。

还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。

为了解决这两个问题,virtualenvwrapper就诞生了

  • virtualenv 虽然已经相当好用了,可是功能还是不够完善。

你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。

还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。

为了解决这两个问题,virtualenvwrapper就诞生了。

  • 安装
代码语言:javascript
复制
# 安装 - Linux环境
pip install virtualenvwrapper

# 安装 - Windows环境
pip install virtualenvwrapper-win
  • 配置 先find一下virtualenvwrapper.sh文件的位置
代码语言:javascript
复制
find / -name virtualenvwrapper.sh
# /usr/bin/virtualenvwrapper.sh

在~/.bashrc 文件新增

代码语言:javascript
复制
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
source /usr/bin/virtualenvwrapper.sh

基本语法: mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME

  • 常用方法
代码语言:javascript
复制
# 创建
$ mkvirtualenv my_env01

# 进入
$ workon my_env01
 
# 退出
$ deactivate

# 列出所有的虚拟环境,两种方法
$ workon
$ lsvirtualenv

# 在虚拟环境内直接切换到其他环境
$ workon my_env02

# 删除虚拟环境
$ rmvirtualenv my_env01
  • 其他命令
代码语言:javascript
复制
# 列出帮助文档
$ virtualenvwrapper

# 拷贝虚拟环境
$ cpvirtualenv ENVNAME [TARGETENVNAME]

# 在所有的虚拟环境上执行命令
$ allvirtualenv pip install -U pip

# 删除当前环境的所有第三方包
$ wipeenv

# 进入到当前虚拟环境的目录
$ cdsitepackages

# 进入到当前虚拟环境的site-packages目录
$ cdvirtualenv

# 显示 site-packages 目录中的内容
$ lssitepackages
pyenv

可通过下方网址安装pyenv: curl https://pyenv.run | bash 安装后,向.bashrc(或.zshrc)文件中添加下方代码,使得pyenv可用于设备。

代码语言:javascript
复制
exportPATH="~/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"

最后,重启设备。 现在可以使用pyenv安装几乎所有的python解释器,包括pypy、anaconda。 需要注意的是,pyenv只在电脑上搭建本地python环境。搭建python环境需要多种函数库。

在Ubuntu系统的电脑上,必须安装以下函数库以防止运行出现问题。

代码语言:javascript
复制
sudo
apt-get installbuild-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev
zlib1g-dev libssl-dev openssllibgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-devlibffi-dev uuid-dev

安装python解释器:

代码语言:javascript
复制
pyenv installVERSION_YOU_WOULD_LIKE_TO_INSTALL

列出所有可用版本

代码语言:javascript
复制
pyenv install --list   

为了使上述过程更加具体,在此安装python3.7.5并且设置其为默认的全局解释器。

代码语言:javascript
复制
pyenv install 3.7.5pyenv global 3.7.5

输入Python-version指令,屏幕将显示Python3.7.5

  • 依赖关系管理

使用pip和pyenv-virtualenv指令

为什么不只用pip? 因为只用pip可能会在全局环境中安装poetry及其依赖项,这可能是你不需要也不想要的。 必要指令如下:

代码语言:javascript
复制
# Create a virtual environmentcalled tools that is based on 3.7.5
pyenv virtualenv 3.7.5 tools
# Install poetry into the tools virtual env
pyenv activate tools
pip install poetry
# Check installed poetry version
poetry --version
# Leave the virtual env
pyenv deactivate
# This does not work yet
poetry --version
# Add your tools virtual env to the globally available ones
pyenv global 3.7.5 tools
# Now this works and you can start using poetry
poetry --version

在使用poetry创建第一个项目之前,建议先对其进行配置,这样就可以在项目目录中的.venv文件夹中创建虚拟环境。 当你使用VsCode或Pycharm这类集成开发环境时就会变得非常方便,因为它们可以立即识别并选择正确的解释器。

代码语言:javascript
复制
poetry configsettings.virtualenvs.in-project true

注意:你只需设置一次配置,设置结果将在全局环境保留。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 优点
  • 常用的市场上管理 Python 版本和环境的工具
    • virtualenv
      • virtualenvwrapper
        • pyenv
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档