Python虚拟环境搭建及管理

可以直接参考文档

Linux下 虚拟环境管理

virtualenv安装

  1. 安装 pip install virtualenv
  2. 查看是否安装成功 virtualenv --version
  3. 查看帮助 virtualenv --help

virtualenv 使用

  1. 创建一个测试用的虚拟环境

    virtualenv my_test_env -p  python3
    

    -p 用来指定python版本 如果python添加了软连接可以像我一样指定,如果没有添加软连接,可以直接定位到python执行文件 /usr/local/python3/bin/python
    如果创建虚拟环境时不选择指定的python版本, 那么虚拟环境创建后默认就是系统默认的python版本.

  2. 激活虚拟环境

    	cd my_test_env
    	source ./bin/activate
    
  3. 查看虚拟环境python版本,pip版本

    	python -v
    	pip -v
    
  4. 退出虚拟环境

    	deactivate
    
  5. 删除虚拟环境 只需要删除my_test_env 目录即可

如果没有启动虚拟环境,系统环境也安装了pip工具,那么packages将被安装在系统环境

为了避免发生此事,可以在~/.bashrc文件中加上
vim ~/.bashrc
export PIP_REQUIRE_VIRTUALENV=true
使配置生效 source ~/.bashrc

如果在没开启虚拟环境时, 在虚拟环境之外的系统上运行pip,就会提示错误:“Could not find an activated virtualenv (required)”.

virtualenv 用法小总结

  1. 创建环境
    virtualenv [新环境名] :这会再当前目录下创建一个新环境目录
    可使用 virtualenv --help 来查看如何使用。可以使用参数 --python=/usr/bin/python3 来创建一个已经安装的的Python环境。

  2. 使用环境
    切换到项目的新环境目录
    执行:source ./bin/activate 来激活环境,激活后在命令行的前面会出现新环境名称
    接下来可使用pip命令安装新环境需要的各种包。(pip命令在创建新环境时自带)

  3. 退出虚拟环境
    deactivate
    如果要删除虚拟环境,只需退出虚拟环境后,删除对应的虚拟环境目录即可。不影响其他环境。

  4. 注意事项
    如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:export PIP_REQUIRE_VIRTUALENV=true
    或者让在执行pip的时候让系统自动开启虚拟环境:export PIP_REQUIRE_VIRTUALENV=true

  5. 保证环境一致性
    用pip freeze查看当前安装版本
    pip freeze

另外:
pip freeze > requirements.txt
这将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表。
可以使用 "pip list"在不产生requirements文件的情况下, 查看已安装包的列表。

这将会使另一个不同的开发者(或者是你本人,如果你本人需要重新创建这样的环境) 在以后安装相同版本的相同包变得容易。
将这个requirements.txt拷贝到新的机器环境下执行:
#pip install -r requirements.txt

这能帮助确保安装、部署和开发者之间的一致性。

虚拟环境管理工具 - Virtualenvwrapper

virtualenv使用起来不是很方便,因为virtual的启动、停止脚本都在特定目录,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。

virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。

Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:

  • 将所有虚拟环境整合在一个目录下;
  • 管理(新增,删除,复制)虚拟环境;
  • 切换虚拟环境等等.
  1. 安装virtualenvwrapper (确保virtualenv已提前安装)

    pip install virtualenvwrapper
    
  2. 设置环境变量

    export WORKON_HOME=~/Envs
    
  3. 创建虚拟环境管理目录. 即创建的虚拟环境都会放到上面设置的~/Envs目录下面

    mkdir -p $WORKON_HOME
    
  4. 在~/.bashrc文件里配置环境变量, 添加下面两行

    vim ~/.bashrc
    export WORKON_HOME=~/Envs
    source /usr/bin/virtualenvwrapper.sh
    
  5. 使得以上环境变量的配置生效

    source ~/.bashrc
    
  6. 现在开始使用Virtualenvwrapper 管理虚拟机
    (可以删除上面之前创建的虚拟环境 my_test_env 了, 后续都将使用Virtualenvwrapper创建和管理虚拟环境)

    1. 使用mkvirtualenv 命令创建虚拟环境

      mkvirtualenv  my_test_env_new --python python3
      
      mkvirtualenv project_hui --python=/usr/local/python3/bin/python3.6.1
      
    2. deactivate 退出虚拟环境

    3. 使用 lsvirtualenv 查看所有虚拟环境

    4. 使用 workon 切换虚拟环境

    5. 删除虚拟环境 rmvirtualenv my_test_env_new

    6. 使用lssitepackages命令显示 虚拟环境的 site-packages 目录中的内容。

    7. 使用cdvirtualenv命令导航到当前激活的虚拟环境的目录中,比如说这样就能够浏览它的site-packages。

    8. 使用cdsitepackages命令直接进入到 site-packages 目录中, 和上面的cdvirtualenv 类似

    为了方便运维管理, 可以进行一些别名设置, 如下:

    vim ~/.bashrc
    #virtualenv
    alias vte=‘virtualenv’
    alias mkvte=‘mkvirtualenv’
    alias deact=‘deactivate’
    alias rmvte=‘rmvirtualenv’
    alias lsvte=‘lsvirtualenv’
    alias won=‘workon’
    使得上面配置生效 source ~/.bashrc
    使用别名进行操作 lsvte

virtualenv使用时遇到的一个坑点, 经常排查验证, 得出结论如下:

  1. root用户和普通用户都可以创建虚拟环境(比如虚拟环境名称为venv),venv虚拟环境的相关文件和文件夹的owner都是该用户,
    如果是非root的其他用户激活该venv虚拟环境的话,会因为文件权限的问题导致python库安装失败!!
    所以说: 非root用户不要去激活使用其他用户创建的venv虚拟环境!

  2. 一旦以用户A的身份激活venv虚拟环境后,在虚拟环境中就不能再通过su命令切换其他用户,否则会自动退出虚拟环境!
    所以说: 在虚拟环境中不要通过su切换用户!

  3. 以用户A的身份激活某venv虚拟环境后,在虚拟环境中所有通过"sudo + cmd"执行的命令,都等同于在虚拟环境外执行。
    所以说: 在虚拟环境中不要通过sudo执行命令

win10环境下搭建virtualenvwrapper-win

  1. pip install virtualenv
  2. pip install virtualenvwrapper-win
  3. 设置系统环境变量 WORKON_HOME= '设置你想统一管理虚拟环境的路径'
  4. 创建虚拟环境 mkvirtualenv test ( 此环境在你刚才配置的环境变量路径下)
  5. 创建指定python版本的虚拟环境 mkvirtualenv -p python3 test
  6. 查看所有虚拟环境 workon
  7. 进入虚拟环境 workon xxx
  8. 退出虚拟环境 deactivate
  9. 删除虚拟环境 mvirtualenv test(虚拟环境名称)
  10. 查看虚拟环境下的安装包 pip list

生成项目所需要的的第三方包依赖文件
pip freeze >requirements.txt
安装
pip install -r requirements.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章