开发者学堂课程【Python 开发基础入门:Linux 下 python 开发环境部署(有基础)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/556/detail/7646
Linux 下 python 开发环境部署(有基础)
目录:
一、Python 课前须知
二、Python 开发 pyenv 安装
三、pyenv 第一个命令
四、Virtualenv 虚拟环境
五、jupyter 安装
六、导出包
一、课前须知
课前预习:
视情况而定,预习相关内容
课堂中:
课上认真听讲,截图、写临时想法、记录脑子中的问题,可以通过截屏的方式
课堂后:
课后自己整理笔记,知识总结整理过程(云笔记、思维导图等),知识整理以及思路梳理,按照自己的方式进行整理,便于复习
作业:
随堂练习
基础知识习题
进阶知识习题
项目实战编码(实战部分只提供基本实现):至少独立完成项目代码
提问
先保留问题,记录下来,下课测试,对问题有了了解后,解决不了再提问,提高提问水平和效率,可以自己先思考
目标
写20000行有效代码
二、开发简介
荷兰人 Guido van Rossum,2005年加入 Google,2013年加入 Dropbox
1989年,创立了 Python 语言,1991年初发布第一个公开发行版
他是英国BBC喜剧《Monty Python's Flying Circus》的忠实粉丝
*Python哲学
>>>import this
显示----python之禅
*版本
*2.x发展到了2.7
*3.X
发展到了3.6
3.x始自2008年,3.5版本发布于2015年
版本不是问题,写好代码在于自己本身。学好一门语言,在于积累,思想转化为编程逻辑
*2.x和3.x区别
语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3x中意思是函数的2个参数。
整除,例如1/2和1//2,3.x版本中/为自然除d 3.x中raw. input重命名为input,不再使用raw_ input
round函数,在3.x中i.5的取整变为距离最近的偶数0字符串统一使用Unicode,2.x需要手动声明编码个数
异常的捕获、抛出的语法改变
直接学习3.x版本
1. 开发环境-Pyenv
* Python 多版本管理工具
*管理 Python 解释器
*管理 Python 版本
*管理 Python 的虚拟环境
*官网 https:/github.com/pyenv/pyeny
Jupyer偏数据分析pandas/numpy等科学计数法
Python具有多版本多版本问题
启动 pyenv,curl 模拟浏览器,通过浏览器方式打开文件,例如一个 shell 脚本,交给 bash 执行
#!/usr/bin/env bash
set -e
[ -n "$PYENV_DEBUG"]& & set -xif [-z "$PYENV_ROOT"]; thenPYENV_ROOT="$ 《HOME} / .pyenv"//创建隐藏目录
Fi
shell=""$1"
if [ -z "$shell"]; then
shell="$(ps c -p "$PPID"-o 'ucomm=' 2>/dev/null ll true)"shell="$ { shell##一}"
shell="$ { shell号号*}"
shell="$ ( basename "$ { shell :-$SHELL}") "
Fi
colorize ( ) {
if [ -t 1 ]; then printf "\e [ %sm8sle [m" "$1""$2"else echo -n "$2"
Fi
checkout () {
[ -d "$2" ] ll git clone --depth 1 "$1""$2"
if ! command -v git 1>/dev/ null 2>&1; then
echo "pyenv: Git is not installed,can't continue." >&2exit 1
Fi
if [ -n "${USE_GIT_URI}"]; thenGITHUB="git:7lgithub.com"
else
GITHUB="https:/l github.com"
Fi
checkout "${GITHUB}/pyenv/pyenv.git"
"${PYENV ROOT ]"
checkout "$(GITHUB}/pyenv/pyenv-doctor.git""${ PYENv_RooT} /plugins/pyenv-doctor"
checkout"${GITHUB}/pyenv/pyenv-installer.git" "${ PYENV_RooT} /plugins/pyehv-install
//虚拟环境插件
checkout"$(GITHUB)/pyenv/pyenv-update.git""${PYENV_Roor}/plugins/pyenv-update"
checkout"$(GITHUB}/pyenv/pyenv-virtualenv.git""${PYENV RooT}/plugins/pyenv-virtualenv"
checkout"${GITHUB}/pyenv/pyenv-which-ext.git""${PYENv_RooT}/plugins/pyenv-which-ext"
把远程的项目文件放入文件,加载到环境目录
1. Pyenv安装
*操作系统准备
*准备Linux最小系统即可。
*如果在虚拟机中克隆, MAC地址会变,需要重启服务或机器
*这里使用CentOS 6.5+pyenv安装方式
不需要安装界面,直接按照命令行最小化安装,可节省资源
克隆虚拟机,选择配置好的机器,创建完整克隆
关闭防火墙
配置ntp,配(多服务互联,时间需要同步,服务器集群)
时间中心服务器时间配置需要统一一致,连接北斗等系统
配置etho(配置网络)
SSH配置(方便xshell等外接软件连接虚拟机)
配置yum源(可以选择阿里云)
虚拟网卡的硬件地址,需要网卡地址绑定修改,在启动虚拟机后,输入vim /etc/sysconfig/network-scripts/ifcfg-eth0
将dscp更改为static静态网络
修改ip地址,与克隆前不一致即可
修改网关,与NAT设置一致即可
子网IP需要设置
最小网络配置文件设置
DEVICE:etho
TYPE:Ethernet
DMBOOT:static
IPADDR:自定义
NETMASK:255.255.255.0
GETWAY:需要自定义
3.pyenv安装方式
Git安装
1、安装git
# yum install git -y
2、安装Python编译依赖
pyenv就地编译安装python,使用gcc等依赖库,缺乏则编译不了
# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-develzlib-devel bzip2-devel
//安装不建议使用root用户安装
3、创建用户python
# useradd python
#passwd python
#su python 切换为python用户,yum需要root用户安装
4、使用python用户登录后安装Pyenv
//在线快速插件安装,也可以使用离线安装包,在线速度较慢
$ curl -Lhttps://github.com/pyenv/ pyenv- installer/raw/ master/bin/ pyenv- installer |bash
下载的pyenv-installer 是一个shel脚本。
在线连接出现问题使用offilne解压安装配置解决
注意:
1.在 https://github.com/pyenv/pyenv-ihstallerpyenv- installer 有安装文档
2.如果cur出现curl: (35) SSL connect error , 是nss版本低的问题,更新它。
可能需要配置一个有较新包的yum源
外部源添加入yum
#vim /etc/yum.repos.d/dvd.repo
[dvd]
Name=CentOS-$releasever -Base
Baseurl=file:///media/dvd1
=file:///media/dvd2
Gpgcheck=0
[updates]
name CentoS-Updates
baseurl=https ://mirrors . aliyun. com/ centos/6.9/os/x86_ 64gpgcheck=0
#yum repolist
然后更新nSS
# yum update nss
安装完成会有一个提示
5、在python用戸的~/.bash profile中追加
# Load pyenv automatically by adding
#the fol lowing to ~/ .bash profile:
//添加到家目录配置文件下
export PATH=" /home/ python/ .pyenv/bin: $PATH"eval "$ (pyenv init -) "
eval "$ (pyenv vi rtualenv-init -) "
eval "$ (pyenv vi rtualenv-init -) "
export PATH="/home python/ . pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init - )"
//使用source刷新配置文件生效
$ source ~/ .bash profile
当用户启动的时候,会执行用户的.bash_ profile中的脚本,就会启动pyenv。
添加到以下文件中
.bash profiie
Get the aliases andfunetionsif[-f~f .bashrc ] ; then
~f .bashrc
Fi
0ser specific environment and startup prograns
PATH=$PATH:$HOMEfbin
export PATH
export PATH=" / home / python/ .pyenv/bin : $PATH"eval "$ (pyenv init -) "
eval "$ (pyenv virtualenv-init -)"
#Python -v
//pyenv命令
some useful pyenv commands are:
Commands
:
List all available pyenv commands
Local:
set or show the local application-specific Python version
Global:
set or show the global Python version
Shell:
set or show the shell-specific Python version
Install:
Install a Python version using python-build
Uninstall:
Uninstall a specifc Python version
Rehash:
Rehash pyenv shims (run this after installing executables)
Version:
show the current Python version and its origin
Versions:
List all Python versions available to pyenv
Which:
Display the full path to an executable
Whence:
List all Python versions that contain the given executable
4.第一个命令install
Install
[python@node~]$pyenv help install
Usage: pyenv install[-f][-kvp]
pyenv install[-f][-kvp] pyenv jinstall -l|--list
pyenv install --version-l/--list
List all available versions
-f/--force
Install even if the version appears to be installed already
-s/--skip-existing skip if the version appears to be installed already
python-build options:
-k/--keepKeep source tree in $PYENV_BUILD_ROOT after installation(defaults to $PYENV_ROOT /sources)
-pl--patch
Apply a patch from stdin before building
-v/--verboseverbose mode: print compilation status to stdout--version
show version of python-build
-g /--debug
Build a debug version
For detailed information on installing Python versions with
python-build, including a list of environment variables for adjustingcompilation,see:
https: //github.com/pyenv/pyenv#readme
$ pyenv help install列出所有可用版本
$ pyenv install--list
在线安装指定版本
$ pyenv install 3.5.3
$ pyenv versiors
安装可能较慢,为了提速,可是选用cache方法。
使用缓存方式安装
#mkdir cache
将install中的安装包拖入cache中
~/ Dvenv家目录下新建cache目录。放入下载好的待安装版本的文件。
version意思当前我所处的Python环境是是什么。
使用缓存方式安装
在~/.pyenv目录下,新建cache目录,放入下载好的待安装版本的文件。不确定要哪一个文件 ,把下载的3个文件都放进去。
#使用cache安装pyenv
$ pyenv install 3.5.3 -V
#离线安装包需要放入固定位置,可反复使用
请用客户端再打开两个会话窗口。提前安装备用pyenv的python版本控制
version显示当前的python版本
versions显示所有可用的python版本,和当前版本名
global全局设置
Shell 当前shell有关事物
Local本地有关事物
$ pyenv global 3.5.3
pyenv控制的窗口中都是3.5.3的python版本了。
使用global是作用于非root用户python用户上, 如果是root用户安装,请不要使用global,否则影响太大。比如,这里使用的Cent0S6 5就是Python2.6,使用了glbal就成了3.x,会带来很不好的影响。
$ pyenv global system
Global影响很大
函数外部定义的变量(即global范围),在函数内部可以引用,但是不能修改。
如果函数中要使用一个外层(这里是global)的变量,若函数内部使用global标记该变量,那么在函数内尽可以“读取”该变量;若要在函数内修改该global变量,则需要用global语句,函数对该变量的修改也会体现到global作用域。
shell会话设置:
影响只作用于当前会话
#pyenv shell 3.5.3
#pyenv versions 改变
#python -V
Python版本改变,仅仅在当前用户改变
$ pyenv she 3.5.3
local本地设置
使用pyenv local设置从当前工作目录开始向下递归都继承这个设置。
local命令只会对当前的文件夹和其子目录中的版本起作用 ,其他的目录不起作用
不同包依赖不同的版本,项目越大包越多,不方便管理
三、Virtualenv 虚拟环境
软件包源中的软件包数量巨大,版本多样,所以需要借助于软件源管理工具,例如 pip、conda、Pipenv、Poetry 等
pip 是最常用的包管理工具,通过
pip install 命令格式来安装软件包,使用的是 pypi 软件包源
conda 多用作科学计算领域的包管理工具,功能丰富且强大,使用的软件包源是 Anaconda repository 和 Anaconda Cloud,conda 不仅支持 Python 软件包,还可以安装 C、C++ 、R 以及其他语言的二定制软件包。除了软件包管理外,还能提供相互隔离的软件环境。
Pipenv 是 Kenneth Reitz 在2017年1月发布的Python依赖管理工具,现在由PyPA维护。 会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作
Poetry 和 Pipenv 类似,是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。你可以把它看做是 Pipenv 和 Flit 这些工具的超集。它可以让你用 Poetry 来同时管理 Python 库和 Python 程序
很多包管理工具不仅提供了基本的包管理功能,还提供了虚拟环境构建,程序管理的等功能
1. 为什么要使用虚拟环境
因为刚才使用的环境都是一个公共空间,如果多个项目使用不同版本开发。
虚拟环境存在的意义只是为了将项目独立,使用虚拟环境的优势就是,该项目使用的第三方工具都需要在虚拟环境中使用pip命令安装,并且安装好的工具不影响系统已有的工具,同时系统中的其他项目也无法调用虚拟环境中安装的工具
2.python 版本
Python 版本指的是 Python 解析器本身的版本。
由于 Python3 不能与 Python2 兼容,而且两大阵营之争持续了很长时间,导致一些软件库需要设配两种版本的 Python,同时开发者可能需要在一个环境中,部署不同版本的 Python,对开发和维护造成了麻烦。
因此出现了版本管理器 Pyenv,类似于 nodejs 的 nvm,可以创建出相互隔离的 Python 环境,并且可以方便的切换环境中的 Python 版本,但和 Python 虚拟环境关系不大
3. python 包库
包库或者叫软件源是 Python 第三方软件的库的集合,或者市场,可以发布、下载和管理软件包,其中 pypi (Python Package Index) https://pypi.org/是官方指定的软件包库,基于其上的 pip 工具就是从这里查找、下载安装软件包的。为了提高下载速度,世界上有很多 Pypi 的镜像服务器,在国内也有多个软件源,例如阿里的软件源是:
http://mirrors.aliyun.com/pypi/simple。除此之外,还有其他软件源,如正对科学计算的 anaconda 的软件源
https://repo.anaconda.com/
4.python 包管理器
软件包源中的软件包数量巨大,版本多样,所以需要借助于软件源管理工具,例如 pip、conda、Pipenv、Poetry 等
pip 是最常用的包管理工具,通过
pip install 命令格式来安装软件包,使用的是 pypi 软件包源
conda 多用作科学计算领域的包管理工具,功能丰富且强大,使用的软件包源是 Anaconda repository 和 Anaconda Cloud,conda 不仅支持 Python 软件包,还可以安装 C、C++ 、R 以及其他语言的二定制软件包。除了软件包管理外,还能提供相互隔离的软件环境。
Pipenv 是 Kenneth Reitz 在2017年1月发布的Python依赖管理工具,现在由PyPA维护。Pipenv 会自动帮你管理虚拟环境和依赖文件,并且提供了一系列命令和选项来帮助你实现各种依赖和环境管理相关的操作.
Poetry 和 Pipenv 类似,是一个 Python 虚拟环境和依赖管理工具,另外它还提供了包管理功能,比如打包和发布。你可以把它看做是 Pipenv 和 Flit 这些工具的超集。它可以让你用 Poetry 来同时管理 Python 库和 Python 程序
很多包管理工具不仅提供了基本的包管理功能,还提供了虚拟环境构建,程序管理的等功能
5.pip 通用配置
pip是Python的包管理工具, 3.x的版本直接带了,可以直接使用。和yun-样为了使用国内镜像,如下配置。
Linux系统
$ mkdir ~/.pip
配置文件在~/.pip/pip.conf
[global]
index-url-https://mirrors.aliyun.com/pypi/simple/trusted-host-mirrors.aliyun.com
6.配置虚拟环境
安装virtualenv或者virtualenvwrapper-win,操作与pycharm中类似
虚拟环境只是为了将某个项目独立于系统中,该项目可以使用自己独享的一套解释器,第三方工具
激活虚拟环境时,只是为了使用pip安装独立的工具
退出虚拟环境后,安装的工具与虚拟环境就没有关系了
创建:
virtualenv 工具
在 python3.3 之前,只能通过 virtualenv 创建虚拟环境,首先需要安装 virtualenv
pip install virtualenv
安装完后,在当前目录下创建一个名为 myvenv 的虚拟环境:
virtualenv --no-site-packages myvenv
参数 --no-site-packages 的意思是创建虚拟环境时,不复制主环境中安装的第三方包,也就是创建一个 “干净的” 虚拟环境
virtualenv 还有很多参数,用于不同的使用场景,例如:
-p: 用于指定 Python 解析器,就是安装好的 Python 应用程序,默认为当前环境中的 Python
--no-pip:不需要安装 pip,默认为安装
--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建
venv 模块
Python3.3 之后,可以用模块 venv 代替 virtualenv 工具,好处是不用单独安装,3.3 及之后的版本,都可以通过安装好的 Python 来创建虚拟环境:
python -m venv myvenv
可以在当前目录创建一个名为 myvenv 的虚拟环境
venv 有些参数,不过相比 virtualenv 少了些,这里简单介绍几个:
--without-pip: 不需要安装 pip,默认为安装
--clear:如果创建虚拟环境的目录已经有了其他虚拟环境,清楚重建
因为 venv 是依附于一个 Python 解析器创建的,所以不需要指定 Python 解释器版本
激活
虚拟环境创建好后,需要激活才能在当前命令行中使用,可以理解成将当前命令行环境中 PATH 变量的值替换掉
通过 virtualenv 和 模块 venv 创建的虚拟环境,激活方式是一样的,即运行激活脚本
Windows 系统中,激活脚本路径是
\Scripts\activate.bat,如果是 powershell 命令行,脚本换成 Activate.ps1 , 注意将 换成你自己的虚拟环境目录.
Linux 系统中,激活脚本路径是 /bin/activate,默认脚本没有执行权限,要么设置脚本为可执行,要么用 source 命令执行,例如$ source myvenv/bin/activate
激活后,可以在命令行中看到虚拟环境标记,如上图
打印 PATH,命令如下:
Linux 下:
echo $PATH
Windows 下
echo %PATH%
可以看到创建的虚拟环境脚本目录被加载了最前面
退出
退出虚拟环境很简单,只需要执行 deactivate 命令就行,这个命令也在虚拟环境的脚本目录下,因为激活时,将脚本目录设置到 PATH 中了,所以可以直接使用.
退出虚拟环境相当于将 PATH 恢复成原来的
7. 虚拟环境作用
(1)版本隔离
(2)虚拟环境可以让系统Python环境保持纯洁,干净,避免包的混乱和版本的冲突。
(3)专为不同的项目搭建不同的环境,为每个项目使用虚拟环境可以保证项目只访问虚拟环境中的包,从而保持全局解释器的干净整洁,使其只作为创建虚拟环境的源。
(4)使用虚拟环境不需要管理员权限。
(5)多个虚拟环境同时进行,如同你拥有了多个Python解释器。
四、jupyter 安装及使用
#juptyer notebook --help
client-ca= (NotebookApp.ciient_ca)
Default: ''
The full path to a certificate authority certificate for sSL/TLs clientauthentication.
ransport=(KernelManager.transport)Default: 'tcp'
choices:[ 'tcp' , 'ipc']
og-level=(Appiication.log_level)Default: 30
choices: (0,10,20,30,40,50,'DEBUG','INFO',"WARN','Bset the log level by value or name .
ertfile=(NotebookApp.certfile)Default:''
The full path to an sSL/TLs certificate file.
To see all available configurables,use '--help-all)
Examples
jupyter notebook
start the notebook
jupyter notebook --certrl1e=mycert.petenter a password to protect the serverjupyter notebodk password
//添加密码,保护软件
#jupyer noyebook --password
Password:输入你设置的密码
//启动jupyter
#jupyter notebook
窗口界面安装会启动浏览器
//查看端口
[python@node site-packages]$ ss -tanl
don.etstateRecv-Q send-o
Local Address : Port
Peer Address : Port
LISTENo128
:: :22
: : :*
LISTENo128
* :22
*:*
T.TSTENo128
127.0.0.1:8888T
* :*
LisTENo128
: :1:8888
: : :*
LISTENo10o
: : l:25
: : :*
LISTENo10o
127.0.0.1:25
浏览器访问不了,需要查询选项,选择对应端口
1. Jupyter 概念
是基于WEB的交互式笔记本,其中可以非常方便的使用Python。安装Jupyter,也会安装ipython的.
Jupyter Notebook是一个Web应用程序,允许您创建和共享包含实时代码,方程,可视化和说明文本的文档。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等。
2.安装步骤
$ pip install jupyter
$jupyter notebook help
$ jupyter notebook --ip=8.0.0.0--no-browserss -tanl
五、导出包
虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已
首先从github上克隆项目
$ git clone
https://github.com/pyenv/pyenv.git
~l.pyenv
$gitclone
https://github.com/pyenv/pyenv-virtualenv.git
~/ .pyenv/plugins/pyenv-virtualenv
$ git clone
https://github.com/pyenv/pyenv-update.git
~/.pyenv/plugins/pyenv-update$ git clone https: //github.com/pyenv/pyenv-which-ext.git ~/ .pyenv/plugins/pyenv-which-ext
可以把克隆的目录打包,方便以后离线使用。
$vim ~/.bash_profile
export PATH="/home/python/.pyenv/bin:$PATH"eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
source ~/.bash_profile