热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python虚拟环境_Python虚拟环境是这么玩转的!

今天给大家聊聊关于Python环境隔离问题以及如何进行隔离。不同的Python项目可能会用到不同的包,而不同的包或不同的python版本之间可能存在冲突。因此

今天给大家聊聊关于Python环境隔离问题以及如何进行隔离。

不同的Python项目可能会用到不同的包,而不同的包或不同的python版本之间可能存在冲突。因此,为每个项目创建不同的虚拟环境非常有用。它可以保证一个项目只访问,它所在虚拟环境下安装的包,保持全局解释器的干净整洁,而且由于环境是独立的,因此不需要超户权限。

创建虚拟环境的方式一般有以下几种。

Virtualenv

它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。譬如,本次学习需要用到Django,我们可以做一个Django的虚拟环境,里面只需要安装Django相关包就可以了,需要Scrapy库,就在开辟一个独立空间来学习Scrapy库相关就行了。

在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。

如果不进行环境隔离全局安装就会导致包的冲突,依赖不同,出现问题。这个时候每个应用都需要一套「独立」的Python运行环境。而Virtualenv就是拿来为应用创建这一套「隔离」的Python运行环境。

安装virtualenv

pip install virtualenv

应用

sitin@test:/data/opt/test$ virtualenv venv
sitin@test:/data/opt/test$ source venv/bin/activate 
(venv) sitin@test:/data/opt/test$ deactivate
sitin@test:/data/opt/test$

Virtualenvwrapper

上面如果我们配置了vitualenvwrapper会更加方便切换进入虚拟环境,做到一键切换进入虚拟环境。不用每次都去到指定项目目录里面进行 source venv/bin/activate。

安装:

pip install virtualenvwrappermkdir ~/.virtualenvs

安装好了,你可以在你的.bashrc或者.zshrc配置virtualenvwrapper,配置如下。

export WORKON_HOME=$HOME/.virtualenvs # 指定目录export VIRTUALENVWRAPPER_PYTHON=/usr/bin/pythonexport VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 隔离系统site-packages export PIP_VIRTUALENV_BASE=$WORKON_HOMEexport PIP_RESPECT_VIRTUALENV=trueif [[ -r /usr/local/bin/virtualenvwrapper.sh ]]; then source /usr/local/bin/virtualenvwrapper.shelse echo "WARNING: Can't find virtualenvwrapper.sh"fi

配置好我们可以创建我们虚拟环境方式如下:

mkvirtualenv your_project #创建rmvitualenv your_project #删除workon # 列出项目workon your_project # 进去某个项目

通过上面这种方式,让我们更加方便切换进入虚拟环境了。

Pyenv

说了vitualenv,vitualenvwrapper,进行Python 包的环境隔离,我们接下来聊聊我们终极利器pyenv -- Python版本的隔离。

我们都知道python存在2,3问题,我们经常需要维护老版本Python2项目,也要考虑新版本Python3的迁移。

说它是终极利器是它除了python版本问题,也可以结合virtualenv,vitualenvwrapper一起使用。

目前pyenv这个库在github上面有14K+的star,可见受到到了非常多的关注。

这里面我们直接进入Mac的安装环节:

brew install pyenv

brew install pyenv-virtualenv

brew install pyenv-virtualenvwrapper

把下面的配置加入到我们的shell环境中,比如我的就是.zshrc。

# ---pyenv--- 

export PATH="$HOME/.pyenv/bin:$PATH"

eval "$(pyenv init -)"

eval "$(pyenv virtualenv-init -)"

配置好之后,我们可以看到pyenv的shell补全,如下图。

7e8b00d203b433376aceba1f1bb10d4e.png

pyenv的具体使用方式:

pyenv install -l # 获取安装列表
pyenv install 3.7.1 # 安装python3.7
pyenv global 3.7.1 # 设置全局python
pyenv virtualenv test-pyenv-venv # 创建虚拟包
pyenv activate test-pyenv-venv # 进入虚拟环境
pyenv deactivate # 退出
...

这里面我就不过多演示使用了,看一个官方的配图。

5114733e3fa4560cbf446cc19073e308.png

干货分享

  • Ping 还可以这样玩

  • 18 个 Python 高效编程技巧!

  • 如何 SSH 登录到 Linux 服务器的指定目录?

  • Vim 利剑常磨,见血封喉

  • Python 的这几个技巧,简直屌爆了

  • 把你的 Linux 打扮的像个黑客屏幕

  • Linux运维进阶:手把手教你用 Strace 诊断问题

  • 如何使用 netstat 命令验证 DDOS 入侵?

  • 聊聊 Linux 的匿名管道

  • Linux 性能调优:玩转 ulimit

  • 神奇高效的 Linux 命令行

  • Linux Shell 生成随机数和随机字符串

  • 学完 Python,为什么还找不到工作?现实很残酷!

  • Python 和 Java 的区别及薪资对比:Python 和 Java哪个好?

  • Linux cut 剪断你的千丝万缕

  • Linux 下 Shell 日期命令的玩法,你能玩转几种?

  • Linux下find与exec的联手干大事

  • 为什么要用 lambda ??

  • Python 开发者节省时间的 10 个方法

  • Redis的N种妙用,不仅仅是缓存

  • #!/usr/bin/env python与#!/usr/bin/python的区别

  • 好看!快收藏:非常完整的MySQL规范

  • Python时操作几个坏习惯,你中了吗?

  • Linux 命令行中点“·”的作用实践探索

  • Linux中神奇的叹号“!”命令——各类型用法总结

  • Linux进程列表里多了个奇怪的进程,如何定位可执行文件位置??

  • 问运维攻城狮:RAID磁盘阵列是什么?一看就懂!

  • 不知道这十项Linux常识,别说自己是运维工程师!

  • 如何同时 ping 1000 个IP?一个小技巧节约N小时!

  • 2019运维技能风向标

  • 来聊聊 Shell 脚本中 " #!/bin/bash“和” #!/bin/sh"的区别

cf2dbc852253ec755f041cf23606d7ab.png

有干货,猛戳下面的据说点”好看2019一定加薪!!




推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Docker 中创建 CentOS 容器并安装 MySQL 进行本地连接
    本文详细介绍了如何在 Docker 中创建 CentOS 容器,并在容器中安装 MySQL 以实现本地连接。文章内容包括镜像拉取、容器创建、MySQL 安装与配置等步骤。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 16.04 系统上配置 Qt 5.5 的交叉编译环境,特别针对 i.MX6 平台进行了优化设置。内容涵盖从基本的软件安装到高级配置的全过程。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文介绍如何在阿里云环境中利用 Docker 容器化技术部署一个简单的 Flask Web 应用,并确保其可通过互联网访问。内容涵盖 Python 代码编写、Dockerfile 配置、镜像构建及容器运行等步骤。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
author-avatar
打篮球的乔巴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有