第一章 - 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. 第七节,Python的可视化包——matplotlib

    1.2D图表 import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt # 通过rcParams设置全局横 ...

  2. webpack dev-server 允许移动端调试

    "dev": "cross-env NODE_ENV=development webpack-dev-server --host 0.0.0.0 --open --hot ...

  3. cocos2dx-lua 裁剪ClippingNode,圆形头像,其他形状图片

    注意事项:裁剪内容要用Sprite,不能换成ImageView 注意事项: 1.后面测试发现,ImageView也能用,注意换成ImageView时,前缀是ccui. 2.要做圆形头像,用一张圆形图做 ...

  4. 使用 ThreeSixty 创建可拖动的 360 度全景图片预览效果

    ThreeSixty 是生成可拖动的360度预览图像序列的 jQuery 插件.只需要在你的 HTML 页面包引入最新的 jQuery 和 threesixty.js 文件就可以使用了,支持键盘上的箭 ...

  5. Centos 7 telnet 详解

    telnet命令 telnet命令用于登录远程主机,对远程主机进行管理.telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了.但仍然有 ...

  6. Java_Scanner和System类

    目录 Scanner类(util包) System类(lang包) Scanner类(util包) Scanner类是一个不可变的类,实现了迭代器接口.一个简单的文本扫描器,可以使用正则表达式解析原始 ...

  7. Python内置函数之-property

    property 是一个内置的装饰器函数,只在面向对象中使用 求一个圆的周长和面积 # 周长和面积都是通过类的方法得到from math import pi class Cricle: def __i ...

  8. Spring Boot重定向的使用方法

    @RequestMapping(value = "/redirect", method = RequestMethod.GET) public void redirecttest( ...

  9. ArrayList Vector

    100000条数据时:测了4次,分别是9ms/13ms:8ms/6ms:8ms/6ms:8ms/6ms[其中/前为ArrayList数据,/后为Vector数据]1000000条数据时:测了4次,分别 ...

  10. Python入门5(pandas中merge中的参数how)

    import pandas as pd df1 = pd.DataFrame([[1,2,3],[1,10,20],[5,6,7],[3,9,0],[8,0,3]],columns=['x1','x2 ...