第一章 - Python 环境搭建

操作系统准备

准备Linux最小系统即可。

如果在虚拟机中克隆,MAC地址会变。 这里使用CentOS 6.5+

Pyenv 安装

  1. 安装git
yum install git -y 
  1. 安装Python编译依赖
yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel  readline-devel zlib-devel bzip2-devel 
  1. 创建用户python
useradd python
passwd python
  1. 使用python用户登录后安装Pyenv
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash

下载的 pyenv-installer 是一个shell脚本。
注意:

  1. 在 https://github.com/pyenv/pyenv-installer 有安装文档
  2. 如果curl出现 curl: (35) SSL connect error ,是nss版本低的问题,更新它。 可能需要配置一个有较新包的yum源

     [updates]
     name=CentOS-Updates
     baseurl=https://mirrors.aliyun.com/centos/6.9/os/x86_64
     gpgcheck=0 

然后更新nss

yum update nss 
  1. 在python用户的~/.bash_profile中追加
export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
source ~/.bash_profile 

这样当用户启动的时候,会执行用户的 .bash_profile 中的脚本,就会启动pyenv。 安装好的pyenv 就在~/.pyenv中

Pyenv 使用

python 版本及path路径

python --version
python -V
echo $PATH 

可以看到当前系统Python路径

pyenv 命令

pyenv
pyenv help install

列出所有可用版本

pyenv install --list 

安装指定版本

pyenv install 3.5.3 -v # 加 -v 可以看详细过程 verbose
pyenv versions

会从python官网下载安装压缩包到 /tmp 目录,很慢,为了提速,可选用cache方法。

使用缓存方式安装
在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。

不确定要哪一个文件,把下载的3个文件都放进去。一般放 'tar.xz' 包。

$ scp ~/Downloads/Python-3.5.3.tar.xz root@10.211.55.6:~/.pyenv/cache
pyenv install 3.5.3 -v

安装后的python文件夹在 .pyenv/versions 下。
cache文件夹里有下载的压缩包。

pyenv 的 python版本控制
version 显示当前的python版本 versions 显示所有可用的python版本,和当前版本。

pyenv version
pyenv versions

global 全局设置
pyenv global 3.5.3 可以看到所有受pyenv控制的窗口中都是3.5.3的python版本了。 这里用global是作用于非root用户python用户上,如果是root用户安装,请不要使用global,否则影响太大。比如,这里使用的CentOS6.5就是Python2.6,使用了global就成了3.x,会带来很不好的影响。 pyenv global system 回到原来系统版本。

shell 会话设置
影响只作用于当前会话 pyenv shell 3.5.3
是会话级的,一旦断开sessionid也变了,也不好用。

local 本地设置
使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。

pyenv local 3.5.3
python -V
# 可能还是显示原来的版本,用pyenv version,要在虚拟环境中 python -V 才会显示新的版本

也可以使用 anaconda,pyenv 是自己下源码编,某些情况下可能不如 anaconda 直接编好的二进制分发。

Virtualenv 虚拟环境设置

为什么要使用虚拟环境? 因为刚才使用的Python环境都是一个公共的空间,如果多个项目使用不同Python版本开发,或者使用不同的Python版本部署运行,或者使用同样的版本开发的但不同项目使用了不同版本的库,等等这些问题都会带来冲突。最好的解决办法就是每一个项目独立运行自己的“独立小环境”中。

使用插件,在plugins/pyenv-virtualenv中
pyenv virtualenv 3.5.3 mag353
使用python3.5.3版本创建出一个独立的虚拟空间 mag353。

$ pyenv versions
* system (set by /home/python/.pyenv/version)
3.5.3
3.5.3/envs/mag353
mag353

可以在版本列表中存在,就和3.5.3是一样的,就是一个版本了。以后只要使用这个虚拟版本,包就会按照到这些对应的目录下去,而不是使用3.5.3。
可以看到真实的虚拟环境是下 envs/ 目录下。
.pyenv/versions/ 下是软链接。

在需要设置python版本的文件夹路径下

pyenv local mag353
pyenv versions

怎么会起作用的,是利用了一堆隐藏文件和在 .bash_profile 中添加的那几指令。

现在可以对python进行版本的管理,包的管理。

pip 通用配置

pip 是Python的包管理工具,3.x的版本直接带了,可以直接使用。 和yun一样为了使用国内镜像,如下配置。
mkdir ~/.pip
配置文件在 ~/.pip/pip.conf

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com

安装 ipython

ipython 是增强的交互式 Python 命令行工具

pip install ipython
ipython

安装 Jupyter

Jupyter 是基于WEB的交互式笔记本,其中可以非常方便的使用Python。
安装Jupyter,也会安装ipython的。

pip install jupyter
jupyter notebook help
jupyter notebook passwd # 设置下浏览器访问时的密码
jupyter notebook --ip=0.0.0.0 --no-browser
ss -tanl

浏览器不能访问是服务器端防火墙问题。

快捷键:shift + enter(运行)、ctrl + enter(运行)、dd(删除一行)、m(用mardkown)

导出包

虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安装的包,在另一个环境中安装这些包。

(mag353) [python@node web]$ pip freeze > requirement
(mag353) [python@node web]$ mkdir ~/magedu/projects/pro1
(mag353) [python@node web]$ cd ~/magedu/projects/pro1
[python@node pro1]$ pyenv install --list
[python@node pro1]$ pyenv install 3.6.4
[python@node pro1]$ pyenv virtualenv 3.6.4 mag364
[python@node pro1]$ pyenv local mag364
(mag364) [python@node pro1]$ mv ../web/requirement ./
(mag364) [python@node pro1]$ pip install -r requirement

最后

本文的另外链接是:https://herodanny.github.io/python-magedu-2018-notes1.html

Python全栈-magedu-2018-笔记1的更多相关文章

  1. 自学Python全栈开发第一次笔记

           我已经跟着视频自学好几天Python全栈开发了,今天决定听老师的,开始写blog,听说大神都回来写blog来记录自己的成长. 我特别认真的跟着这个视频来学习,(他们开课前的保证书,我也写 ...

  2. Python全栈之jQuery笔记

    jQuery runnoob网址: http://www.runoob.com/jquery/jquery-tutorial.html jQuery API手册: http://www.runoob. ...

  3. python全栈开发之OS模块的总结

    OS模块 1. os.name()      获取当前的系统 2.os.getcwd      #获取当前的工作目录 import os cwd=os.getcwd() # dir=os.listdi ...

  4. python全栈开发中级班全程笔记(第二模块、第四章(三、re 正则表达式))

    python全栈开发笔记第二模块   第四章 :常用模块(第三部分) 一.正则表达式的作用与方法 正则表达式是什么呢?一个问题带来正则表达式的重要性和作用      有一个需求 : 从文件中读取所有联 ...

  5. python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)

    python全栈开发笔记第二模块 第四章 :常用模块(第二部分)     一.os 模块的 详解 1.os.getcwd()    :得到当前工作目录,即当前python解释器所在目录路径 impor ...

  6. python全栈开发中级班全程笔记(第二模块、第三章)(员工信息增删改查作业讲解)

    python全栈开发中级班全程笔记 第三章:员工信息增删改查作业代码 作业要求: 员工增删改查表用代码实现一个简单的员工信息增删改查表需求: 1.支持模糊查询,(1.find name ,age fo ...

  7. 老男孩Python全栈第2期+课件笔记【高清完整92天整套视频教程】

    点击了解更多Python课程>>> 老男孩Python全栈第2期+课件笔记[高清完整92天整套视频教程] 课程目录 ├─day01-python 全栈开发-基础篇 │ 01 pyth ...

  8. 老男孩最新Python全栈开发视频教程(92天全)重点内容梳理笔记 看完就是全栈开发工程师

    为什么要写这个系列博客呢? 说来讽刺,91年生人的我,同龄人大多有一份事业,或者有一个家庭了.而我,念了次985大学,年少轻狂,在大学期间迷信创业,觉得大学里的许多课程如同吃翔一样学了几乎一辈子都用不 ...

  9. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  10. python 全栈开发之路 day1

    python 全栈开发之路 day1   本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...

随机推荐

  1. v-model

    仅用于以下控件: <input> <select> <textarea> 组件 v-model以Vue 实例的数据作为数据来源,应当在组件的 data 选项中声明初 ...

  2. liunx系统下调整Swap分区大小

    作者:邓聪聪 添加swap交换空间的步骤如下:第一步:确保系统中有足够的空间来用做swap交换空间,准备在一个独立的文件系统中添加一个swap交换文件,在/tmp中添加1G的swap交换文件第二步:添 ...

  3. HTTP协议10-实体首部字段

    实体首部字段 实体首部字段是包含咋请求报文和响应报文中实体部分的首部,用于补充内容的更新时间等于实体相关的信息. 1)Allow Allow:GET,HEAD 用于通知客户端能够支持访问指定资源的请求 ...

  4. selenium——键盘操作

    很多键盘操作实际是没有意义的.

  5. .NET垃圾回收机制(一)

    垃圾收集器(GarbageCollection)是组成.Net平台一个很重要的部分,.NET垃圾回收机制降低了编程复杂度,使程序员不必分散精力去处理析构.不妨碍设计师进行系统抽象.减少了由于内存运用不 ...

  6. Linux /etc/sudoers 文件详解

    [root@test ~]# cat /etc/sudoers## Sudoers allows particular users to run various commands as## the r ...

  7. 出错:Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'cn.mgy.mapper.UserMapper.findById'.

    详细出错代码: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.a ...

  8. JDK 8 函数式编程入门

    目录 1. 概述 1.1 函数式编程简介 1.2 Lambda 表达式简介 2. Lambda 表达式 2.1 Lambda 表达式的形式 2.2 闭包 2.3 函数接口 3. 集合处理 3.1 St ...

  9. javac编译后运行提示找不到或无法加载主类

    第一种常见错误: package demo_01; public class hello { public static void main(String[] args) { System.out.p ...

  10. 爬虫-requests

    一.爬虫系列之第1章-requests模块 爬虫简介 概述 近年来,随着网络应用的逐渐扩展和深入,如何高效的获取网上数据成为了无数公司和个人的追求,在大数据时代,谁掌握了更多的数据,谁就可以获得更高的 ...