美文网首页
python虚拟环境

python虚拟环境

作者: 寇寇寇先森 | 来源:发表于2020-01-21 09:41 被阅读0次

    优点

    • 使不同应用开发环境独立
    • 环境升级不影响其他应用,也不会影响全局的python环境
    • 可以防止系统中出现包管理混乱和版本的冲突

    常用的市场上管理 Python 版本和环境的工具

    • pyenv:简单的 Python 版本管理工具。
    • virtualenv:创建独立 Python 环境的工具。
    • virtualenvwrapper:virtualenv 的一组扩展。
    virtualenv

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

    • 安装
    pip3 install virtualenv
    # 检查版本
    virtualenv --version
    

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

    • 创建
    # 准备目录并进行
    $ 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环境。

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

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

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

    # 导出依赖包
    $ pip freeze > requirements.txt
    
    # 安装依赖包
    $ pip install -r requirements.txt 
    
    virtualenvwrapper

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

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

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

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

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

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

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

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

    • 安装
    # 安装 - Linux环境
    pip install virtualenvwrapper
    
    # 安装 - Windows环境
    pip install virtualenvwrapper-win
    
    • 配置
      先find一下virtualenvwrapper.sh文件的位置
    find / -name virtualenvwrapper.sh
    # /usr/bin/virtualenvwrapper.sh
    

    在~/.bashrc 文件新增

    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

    • 常用方法
    # 创建
    $ mkvirtualenv my_env01
    
    # 进入
    $ workon my_env01
     
    # 退出
    $ deactivate
    
    # 列出所有的虚拟环境,两种方法
    $ workon
    $ lsvirtualenv
    
    # 在虚拟环境内直接切换到其他环境
    $ workon my_env02
    
    # 删除虚拟环境
    $ rmvirtualenv my_env01
    
    • 其他命令
    # 列出帮助文档
    $ 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可用于设备。

    exportPATH="~/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"
    

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

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

    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解释器:

    pyenv installVERSION_YOU_WOULD_LIKE_TO_INSTALL
    

    列出所有可用版本

    pyenv install --list   
    

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

    pyenv install 3.7.5pyenv global 3.7.5
    

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

    • 依赖关系管理

    使用pip和pyenv-virtualenv指令

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

    # 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这类集成开发环境时就会变得非常方便,因为它们可以立即识别并选择正确的解释器。

    poetry configsettings.virtualenvs.in-project true
    

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

    相关文章

      网友评论

          本文标题:python虚拟环境

          本文链接:https://www.haomeiwen.com/subject/yctezctx.html