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

边做边学PythonFlaskWeb开发(1)安装Python

边做边学PythonFlaskWeb开发(1)--安装Python,Go语言社区,Golang程序员人脉社

安装Python开发环境

为了照顾从未接触过Python的小伙伴,先从怎样安装Python开发环境开始吧。

在Windows平台上安装Python

安装Python2.7

Python官方网站提供了Windows的二进制安装包,因此在Windows平台安装Python开发环境非常简单。第一步当然去www.python.org下载你需要的安装程序。

选择Python的版本非常重要,当前Python活跃的版本有两个,分别是2.7.x和3.5.x,由于Flask对2.7系列的Python支持较好,本系列教程以2.7为例,因此请大家下载2.7系列的安装程序,至于32位和64位则可以根据操作系统的类型选择,目前大部分主流操作系统均为64位的,如果你的机器比较老,或者实在不确定是什么架构,可以选择32位的安装程序。

这里写图片描述

安装Python和安装其它Windows程序没有什么区别,需要注意的是,在选择安装组件的过程中,应当把“注册环境变量”打上勾,这样安装程序会为你设置好Python运行所需要的环境变量,省去了人工设置的麻烦。

这里写图片描述

安装VC编译器

如果多了解一些Python的内部机制,你可能会知道现我们介绍的Python实际上是CPython,即Python的C语言实现,Python还有Java、.Net平台的实现,不在本文讨论的范围内。因此,在Python后续使用的过程中,安装一些库的时候不可避免地要对C代码进行编译,因此,建议同时安装好VC编译器,以免后续在安装支持库的时候出现不可预料的问题。微软为Python发布了一个专用的Visual C++ 编译程序。

  • 可以在微软下载中心下载:https://www.microsoft.com/en-us/download/details.aspx?id=44266。
  • 如果觉得下载速度太慢,也可以使用我分享的百度盘地址:http://pan.baidu.com/s/1nvOYTa5

在Linux平台上(CentOS6.5)上安装Python

大部分Linux系统均内置了Python运行环境,但是通常这些Python运行环境的版本比较旧,比如CentOS系统自带的Python版本是2.6.6,使用使用它们作为开发环境,可能会有不少潜在的坑和风险,所以推荐使用新版本的Python开发环境。想要在Linux系统中使用新版Python,通常我们需要从源码编译安装。

后续步骤均在CentOS 6.5环境中测试通过

准备工作

首先,你需要从www.python.org得到一份Python 2.7.11的源代码,网站提供了gzip,xz两种格式的压缩包,选择你熟悉的压缩包并下载下来,也可以使用下面的命令下载。

wget https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz

下载后把源代码解压到合适的位置。

tar zxf Python-2.7.11.tgz

在编译Python代码前,我们需要暂停一下做点其它准备工作:由于Python编译过程中会根据系统中的一些组件支持情况,选择性地编译一些系统支持功能,因此,如果想让自己编译的Python好用,需要安装这些系统组件的开发包。

#yum install zlib zlib-devel openssl openssl-devel sqlite sqlite-devel

从源码安装

完成上述步骤后,就可以开始Python的编译过程了,需要注意的是,如果你需要使用pyinstaller,那么需要启用一些Python的共享库,即配置时使用–enable-shared,我们按这种方式继续。

#./configure --enable-shared
#make install

下面描述的问题,不一定每个人都能遇到,但是因为我碰到了,所以记录下来供大家参考。

无法执行python命令

如果使用了–enable-shared参数,我在安装完毕后命令行输入python命令时,提示找不到库文件的错误:

# python
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory

这时候可以使用ldd /usr/bin/python查看哪些库缺失:

# ldd /usr/local/bin/python
    linux-vdso.so.1 =>  (0x00007fff9168f000)
    libpython2.7.so.1.0 => not found   ## <<<这里提示缺少libpython2.7.so.1.0,可以使用find / -name xxx来查找到该库文件
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003a77000000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003a76800000)
    libutil.so.1 => /lib64/libutil.so.1 (0x0000003a83800000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003a77400000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003a76c00000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003a76400000)

然后使用下面的命令将相应库链接到/lib64目录中。
ln -s /usr/local/lib/libpython2.7.so.1.0 /lib64/

命令行输入python仍然是旧版本的

Python默认的安装位置在 /usr/local/bin/python2.7,可以分别在命令行输入python -V/usr/local/bin/python2.7 -V 来查看是否版本一致,如果版本不一致需要把旧的python版本换掉:

#mv /usr/bin/python /usr/bin/python2.6.6  
#ln -s /usr/local/bin/python2.7 /usr/bin/python  

安装新版本python后,yum无法使用

换掉Python后,可能会出现yum无法使用的情况,这是因为yum使用的是旧版的python运行环境,这时需要修改一下yum的源代码。

***********
修改yum文件,不然yum没法使用
#vi /usr/bin/yum
将 #!/usr/bin/python 修改为 #!/usr/bin/python2.4
**********

安装常用工具

在后续的部署过程中,需要大量使用到pip等python工具,下面是安装方法。

安装pip

在安装pip前,需要安装setuptools工具包,将该工具包解压后,使用以下命令安装。
python setup.py install

安装pip步骤和setuptools一样,同样是运行python setup.py install

安装virtualenv

安装完pip后,可以使用pip install virtualenv安装virtualenv。安装完毕后,使用以下命令创建Python虚拟环境。

virtualenv venv           #创建虚拟环境
source venvbinactive    #启用虚拟环境

然后在虚拟环境中用pip安装所缺的包

问题汇总

安装setuptools的时候提示找不到zlib

原因是没有安装zlib-devel

#yum install zlib
#yum install zlib-devel

然后重新编译安装python(不需要删除,直接make install)

pip安装virtualenv时提示没法导入HTTPSHandler

原因是没有安装openssl-devel

#yum install openssl
#yum install openssl-devel

然后重新编译安装python。

下一节我们将介绍Virtualenv的使用。Windows中使用virutalenv也请参阅下一节。


推荐阅读
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了iOS开发中检测和解决内存泄漏的方法,包括静态分析、使用instruments检查内存泄漏以及代码测试等。同时还介绍了最能挣钱的行业,包括互联网行业、娱乐行业、教育行业、智能行业和老年服务行业,并提供了选行业的技巧。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
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社区 版权所有