当前位置: 首页 > news >正文

Python开发环境配置

一、前言

  Python 2和Python 3之间存在着较大的差异,并且,由于各种原因导致了Python 2和Python 3的长期共存。在实际工作过程中,我们可能会同时用到Python 2和Python 3,因此,也需要经常在Python 2和Python 3之间进行来回切换。这就需要对python的版本进行管理,除此之外还需要对不同的软件包进行管理。大部分情况下,对于开源的库我们使用最新版本即可。但是,有时候可能需要对相同的Python版本,在不同的项目中使用不同版本的软件包。

  在这里,我们要使用两个工具:pyenv和virtualenv。前者用于管理不同的Python版本,后者用于管理不同的工作环境。有了这两个工具,Python相关的版本问题将不再是问题。

二、安装pyenv

  pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。

  pyenv官方地址https://github.com/pyenv/pyenv-installer

  

  1.安装pyenv

  在命令行下输入:  

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

  默认安装到当前用户的工作目录下的.pyenv,我们可以查看

$ cd ~
$ ls -la | grep pyenv

  如果安装过git,也可以用一下的命令进行安装

git clone https://github.com/pyenv/pyenv.git ~/.pyenv

  安装完成后,复制最后的安装路径

export PATH="/home/egon/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

  2.将安装路径写入~/.bashrc  

sudo vim ~/.bashrc

  将上面复制的安装路径追加到.bashrc文件的末尾,如下图所示:

  执行命令,让刚才配置的文件立即生效,并且查看是否成功  

source  ~/.bashrc    #让配置文件立即生效

echo $PATH #如果路径第一个结尾是shims,则表示成功

 

  也可以将上面三条命令写入到 ~/.barsh_profile,然后重启一下shell

  3.更新pyenv

pyenv update

  

三、安装pyenv

  1.查看pyenv当前支持哪些Python版本 

pyenv install --list

Available versions:

  2.1.3
  2.2.3
  2.3.7
  2.4

  ......

  2.列出pyenv中所有可用的Python版本 

pyenv versions

  3.使用pyenv安装Python

  在安装python之前,我们必须安装python所需要的依赖包,这个必须安装,否则安装会失败

sudo apt-get install libc6-dev gcc

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

  安装python(直接安装)

pyenv install 3.6.4 -v  #-v以日志模式显示安装过程

  说明:因为pyenv会自动到github上去下载,速度超级慢,所以一般会选择使用curl或者wget下载到~/.pyenv/cache下,

     然后再用pyenv安装,下面是可选的安装模式

cd ~/.pyenv

sudo mkdir cache

wget -c http://mirrors.sohu.com/python/3.6.4/Python-3.6.4.tar.xz -P  ~/.pyenv/cache/

pyenv install 3.6.4 -v

  安装完成后需要更新pyenv数据库

pyenv rehash

   4.重复执行pyenv versions

 

四、virtualenv

  virtualenv本身是一个独立的项目,用以隔离不同项目的工作环境。例如,项目A和项目B都是使用Python 2.7.13,但是,项目A需要使用Flask 0.8版本,项目B需要使用Flask 0.9版本。我们只要组合pyenv和virtualenv这两个工具,就能够构造Python和第三方库的任意版本组合,拥有了很好的灵活性,也避免了项目之间的相互干扰。

  virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果你使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。

  

  创建项目的虚拟环境

  用法:pyenv virtualenv python版本号 虚拟环境名 

pyenv virtualenv 3.6.4 env36   #注意版本号必须是已经安装的,否则会报错

   如下图所示,pyenv管理的python版本已经有了刚创建的env35

 

   切换到刚才创建的环境  

pyenv activate env35

  

  这时候我们就进入了虚拟环境了。

  切出虚拟环境  

pyenv deactivate env35

  有时候会出现使用上面的命令,退不出虚拟环境,我们可以使用global 命令来切换python版本来退出虚拟环境

pyenv global 3.6.4

  删除创建的虚拟环境

pyenv virtualenv-delete env35 

  

五、使用pip下载库

  使用pip下载,会从国外的网站下载,速度超慢,所以要切换pip到国内的镜像源,一般会用psm切换pip的源

  1.安装一个软件psm 

pip install psm

  2.psm的使用

  以下操作需要在虚拟环境外进行,选择好镜像源后在进入虚拟环境

  查看列出pip的镜像源  

psm ls

  pypi https://pypi.python.org/simple/
  douban http://pypi.douban.com/simple/
  aliyun http://mirrors.aliyun.com/pypi/simple/

  切换镜像源

psm use douban

  使用pip下载库

pip install pymysql

 

六、用pycharm创建虚拟环境(主要用于windows)

  打开pycharm,如下图所示进行操作,创建一个Pure Python只是一个引子,用来过度创建环境,环境创建好根据需求可以直接删除

  

 

    再次打开pycharm,根据需求创建项目

  

  

 

转载于:https://www.cnblogs.com/huiyichanmian/p/10083167.html

相关文章:

  • 什么是Word Embeddings
  • 深度学习【一】理解神经网络
  • 微服务核心架构梳理
  • PostgreSQL checksum
  • 关于在vim中的查找和替换
  • Vuex的初探与实战小结
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 表格单元格td设置宽度无效的解决办法
  • python基础-数据类型
  • 【FPGA】Xilinx-7系的时钟资源与DDR3配置
  • 谈项目中如何选择框架和库(FEDAY主题分享总结)
  • 如何做线段绕着点旋转一定角度的动画
  • python写商品管理练习
  • React组件设计模式(一)
  • 【技能意志矩阵-skill will matrix】工作中究竟是个人能力更重要,还是我们的积极性更能提高我们的业绩?...
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • exif信息对照
  • FineReport中如何实现自动滚屏效果
  • Flannel解读
  • flask接收请求并推入栈
  • HTTP请求重发
  • Javascript 原型链
  • java中的hashCode
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • React-flux杂记
  • 关于Java中分层中遇到的一些问题
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • # 计算机视觉入门
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (pojstep1.3.1)1017(构造法模拟)
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (四)Android布局类型(线性布局LinearLayout)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .form文件_SSM框架文件上传篇
  • .gitignore文件_Git:.gitignore
  • .net通用权限框架B/S (三)--MODEL层(2)
  • ??javascript里的变量问题
  • [ NOI 2001 ] 食物链
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [04] Android逐帧动画(一)
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [ASP]青辰网络考试管理系统NES X3.5
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [CF543A]/[CF544C]Writing Code
  • [Firefly-Linux] RK3568 pca9555芯片驱动详解
  • [hive] 窗口函数 ROW_NUMBER()
  • [Java安全入门]三.CC1链
  • [LeeCode]-Divide Two Integers 不用乘除的除法运算
  • [MAUI]集成高德地图组件至.NET MAUI Blazor项目
  • [one_demo_15]模拟交通灯管理系统