Linux--4
一、centos7安装python3
1、下载python3的源码包
下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz
1
2
|
cd / opt 进入 / opt目录,一般安装的软件都放在此目录下 [root@localhost opt] # wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz |
下载完成,如下图:
2、安装python前的库环境,非常重要
安装python3之前,解决环境依赖,提前安装好这些软件包,日后就不会出现很多坑。
1
|
yum install gcc patch libffi - devel python - devel zlib - devel bzip2 - devel openssl - devel ncurses - devel sqlite - devel readline - devel tk - devel gdbm - devel db4 - devel libpcap - devel xz - devel - y |
3、解压缩源码包
下载好python3源码包之后,解压缩
1
|
[root@localhost opt] # tar -xvf Python-3.6.2.tgz |
完成后查看,如下:
进入Python-3.6.2目录
1
|
[root@localhost opt] # cd Python-3.6.2 |
4、编译且安装
1)释放编译文件makefile,这个makefile就是用来编译安装的,为下一步的编译做准备,可以通过在 configure 后加上参数来对安装进行控制
1
|
[root@localhost Python - 3.6 . 2 ] # ./configure --prefix=/opt/python36/ |
上条命令的意思是将该软件安装在 /opt/python36/ 下面,执行文件会安装在/opt/python36/bin(而不是默认的/usr/local/bin),资源文件就会安装在 /opt/python36/share(而不是默认的/usr/local/share)。
同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定。有一些软件还可以加上 --with、--enable、--without、--disable 等等参数对编译加以控制,你可以通过允许 ./configure --help 察看详细的说明帮助。
上条命令执行结果产生了Makefile文件,如下图:
2)make
1
|
[root@localhost Python - 3.6 . 2 ] # make |
这一步就是编译,大多数的源代码包都经过这一步进行编译.
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能,比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
3)make install(在这一步,会生成/opt/python36)
1
|
[root@localhost Python - 3.6 . 2 ] # make install |
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
上述3步完成后,/opt/python36/bin目录下就有了python3.6和pip3.6,如下:
5、配置python3.6的环境变量
1
|
[root@localhost ~] # echo $PATH 查看环境变量 |
在上面的输出结果(假设为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)之上加入路径/opt/python36/bin,再重新赋给变量PATH,即
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
这个变量赋值操作,只是临时生效,需要写入到/etc/profile文件,才能永久生效
1
|
[root@localhost ~] # vi /etc/profile |
在文件最后写入
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/python36/bin
保存退出
1
|
[root@localhost ~] # source /etc/profile 读文件,使得环境变量生效 |
注意:也可以通过配置软链接代替此过程,但是上述过程较好,因此软链接方法不作过多介绍。
6、在linux上开启一个django项目
1)下载django
1
2
|
[root@localhost ~] # pip3 install django [root@localhost ~] # pip3 list 查看有哪些python包 |
2)创建django项目(注意所在目录,会在命令执行时的目录下生成项目)
1
|
[root@localhost opt] # django-admin startproject mysite |
3)创建应用app01
1
2
|
[root@localhost opt] # cd mysite [root@localhost mysite] # python manage.py startapp app01 |
4)编写视图函数
5)修改配置文件settings.py的ALLOW_HOSTS参数
1
2
|
[root@localhost mysite] # vi ./mysite/settings.py 将settings.py中的ALLOW_HOSTS = [] 改为 ALLOW_HOSTS = [ '*' ] |
6)开启django服务器
1
|
[root@localhost mysite] # python manage.py runserver 0.0.0.0:8000 |
此时,打开windows浏览器,输入服务器的ip(服务器对外ip,而非上面的0.0.0.0)和端口号8000即可访问django项目。
7、yum工具注意事项
如果你用yum命令,提示yum进程被锁定,无法使用时可以通过命令
1
|
ps - ef|grep yum 查看yum进程 |
有结果则表示另一个进程也在用yum,而yum只能有一个进程同时使用
二、Linux下安装、配置virtualenv
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本库的问题;或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。
这里,就要隆重介绍 virtualenv,一个可以帮助我们管理不同 Python 环境的绝好工具。
virtualenv 可以在系统中建立多个不同并且相互不干扰的虚拟环境。virtualenv 就是一个虚拟解释器,是基于物理环境下的python解释器虚拟/分身出的解释器 。
1、通过物理环境的pip下载virtualenv工具
1
|
pip3 install - i https: / / pypi.tuna.tsinghua.edu.cn / simple virtualenv |
参数 -i 指定清华源下载pip的包,下载后linux中就多了一个virtualenv命令,如下:
2、创建一个虚拟环境
1
|
[root@localhost opt] # virtualenv --no-site-packages --python=python3 s15venv1 |
参数解释:
--no-site-packages 这是构建干净,隔离的模块
--python=python3 这个参数是指定虚拟环境以哪一个物理解释器为基础的
s15venv1 这个是一个是虚拟环境的名字,当前目录下会创建这么一个文件夹
3、进入虚拟环境目录,激活虚拟环境
找到虚拟环境目录下bin目录下的activate文件
1
2
3
4
|
[root@localhost opt] # source ./s15venv1/bin/activate 激活虚拟环境 (s15venv1) [root@localhost opt] # echo $PATH 检查环境变量 (s15venv1) [root@localhost opt] # which python3 检查虚拟环境的解释器是否正常 (s15venv1) [root@localhost opt] # which pip3 检查虚拟环境的解释器是否正常 |
激活虚拟环境,原理就是修改了PATH变量,path是有顺序执行的。
4、在虚拟环境中安装django
1
2
3
|
(s15venv1) [root@localhost opt] # pip3 install django==1.11.11 (s15venv1) [root@localhost opt] # pip3 list 查看是否安装成功 (s15venv1) [root@localhost opt] # django-admin startproject mysite1 创建django项目 |
编辑配置文件settings.py文件中的ALLOW_HOSTS参数
1
|
(s15venv1) [root@localhost opt] # vi ./mysite1/mysite1/settings.py |
启动服务器
1
|
(s15venv1) [root@localhost opt] # python ./mysite1/manage.py runserver 0.0.0.0:8000 |
使用浏览器访问服务器即可
1
|
(s15venv1) [root@localhost opt] # deactivate 退出虚拟环境 |
三、确保开发环境的一致性
假设我们在本地开发环境,准备好了项目+依赖包环境,现在需要将项目上传至服务器,上线发布,那么就要保证服务器的python环境一致。解决方案如下步骤:
1、通过命令导出开发环境依赖的包
1
|
(s15venv1) [root@localhost opt] # pip3 freeze > requirements.txt |
上面命令将会创建一个 requirements.txt 文件,其中包含了当前环境中所有包及各自版本的简单列表。可以使用 “pip list”在不产生requirements文件的情况下, 查看已安装包的列表,如下:
2、将产生的requirements.txt文件传至(可以使用scp命令)生产环境的服务器,在服务器下创建virtualenv,在venv中导入项目所需的模块依赖
1
|
(prodEnv) [root@localhost opt] # pip3 install -r requirements.txt |
上面命令执行后会在生产服务器对应项目的虚拟环境中导入与开发环境中相同的且版本一致的依赖包。
四、虚拟环境之virtualenvwrapper
virtualenv 的一个最大的缺点就是:每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录,并且还有可能你忘记了虚拟环境放在哪。
一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,例如/opt/all_venv/,并且针对不同的目录做不同的事。
另一种是使用virtualenvwrapper管理你的虚拟环境(virtualenv),其实他就是统一管理虚拟环境的目录,并且省去了source的步骤。下面详细介绍此方法的使用步骤:
1、安装virtualenvwrapper
1
|
pip3 install virtualenvwrapper |
注意:此命令必须得在物理解释器下执行,不要在虚拟环境下
2、设置Linux的环境变量,每次启动就加载virtualenvwrapper
确保/etc/profile文件的环境变量PATH中,物理解释器的python在最前面,如下图所示:
把下面几行代码添加到 ~/.bashrc文件中
1
|
vim ~ / .bashrc 打开用户家目录下的隐藏文件.bashrc,在文件最后写入下面代码 |
export WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录,用户家目录下产生Envs目录
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
# 上一行表示添加virtualenvwrapper的参数,生成干净隔绝的环境
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3 # 指定python解释器
source /opt/python36/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
执行下面命令,读取文件,使得上面代码生效,然后就可以使用virtalenvwrapper工具了
1
|
source ~ / .bashrc |
或者也可以重新登录会话,使得配置生效,如下:
3、virtualenvwrapper工具基本使用
1
2
3
4
|
mkvirtualenv env1 # 自动下载并创建虚拟环境env1,且激活此虚拟环境 workon env1 # 激活虚拟环境env1,输入workon tab键可查看当前有哪些虚拟环境 deactivate # 退出虚拟环境 rmvirtualenv env1 # 删除虚拟环境 env1,需要先退出虚拟环境 |
4、其他常用命令
1
2
3
4
|
lsvirtualenv # 列举所有的环境 cdvirtualenv # 进入当前已激活的虚拟环境所在的目录 cdsitepackages # 进入当前激活的虚拟环境的,python包的目录 lssitepackages # 显示 site-packages 目录中的内容。 |
完整官网介绍:https://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html
5、pycharm下创建虚拟环境
参考博客:https://www.cnblogs.com/pyyu/p/9015317.html
五、vim
参考博客:https://www.cnblogs.com/pyyu/p/9460649.html
六、其他
1
|
yum install wget - y 安装wget命令 |
Linux--4的更多相关文章
- Linux 驱动开发
linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...
- Linux 内核概述 - Linux Kernel
Linux 内核学习笔记整理. Unix unix 已有40历史,但计算机科学家仍认为其是现存操作系统中最大和最优秀的系统,它已成为一种传奇的存在,历经时间的考验却依然声名不坠. 1973 年,在用 ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- NodeJs在Linux下使用的各种问题
环境:ubuntu16.04 ubuntu中安装NodeJs 通过apt-get命令安装后发现只能使用nodejs,而没有node命令 如果想避免这种情况请看下面连接的这种安装方式: 拓展见:Linu ...
- [linux]阿里云主机的免登陆安全SSH配置与思考
公司服务器使用的第三方云端服务,即阿里云,而本地需要经常去登录到服务器做相应的配置工作,鉴于此,每次登录都要使用密码是比较烦躁的,本着极速思想,我们需要配置我们的免登陆. 一 理论概述 SSH介绍 S ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...
- Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作
Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...
- SQL Server on Linux 理由浅析
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
- Microsoft Loves Linux
微软新任CEO纳德拉提出的“Microsoft Loves Linux”,并且微软宣布.NET框架的开源,近期Microsoft不但宣布了Linux平台的SQL Server,还宣布了Microsof ...
- Linux 江湖系列阶段性总结
引言 我使用 Linux 已经有很多年了,最开始接触 Linux 的时候是从 RedHat 9(没有 Enterprise),中途换过 N 个不同的发行版.多年前,我在 BlogJava 上面分享 J ...
随机推荐
- 文件系统(node.js学习笔记)
根据nodejs菜鸟教程整理. 官方API文档:nodeJS文件系统API 其他整理:nodejs File System 文件系统操作函数分类 1.引用: 导入文件系统模块(fs)语句:var fs ...
- 完美前向保密PFS
===========来自网友=========== “前向安全性”应当是叫做“forward security”.该定义最早是由Mihir Bellare和Sara K. Miner在 CRYPTO ...
- 前端之css样式(选择器)
一.css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,对html标签的渲染和布局 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如 二.c ...
- Project Server2016升级安装问题项目中心无法显示
sharepoint 2016升级后,project server 相关中心页面出现空白页面,这是是sharepoint2016一个bug,解决方案用PWA.resx内容替换PWA.en-us.res ...
- Java探索之旅(2)——GUI输入输出与代码的规范性
1.知识点概叙 ① 定名常量:关键字final,类似C++ const定义,一般用大写:final double PI=3.1415926 ② 5/2=2:5.0/2=2.5://通常意义的除法,至少 ...
- [poj3311]Hie with the Pie(Floyd+状态压缩DP)
题意:tsp问题,经过图中所有的点并回到原点的最短距离. 解题关键:floyd+状态压缩dp,注意floyd时k必须在最外层 转移方程:$dp[S][i] = \min (dp[S \wedge (1 ...
- [matlab]机器学习及SVM工具箱学习笔记
机器学习与神经网络的关系: 机器学习是目的,神经网络是算法.神经网络是实现机器学习的一种方法,平行于SVM. 常用的两种工具:svm tool.libsvm SVM分为SVC和SVR,svc是专门用来 ...
- p2345 奶牛集会
传送门 题目 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶 ...
- 292C Beautiful IP Addresses
传送门 题目 The problem uses a simplified TCP/IP address model, please read the statement carefully. An I ...
- c++中Int装string
java中,string类型非常强大,任何类型和string类型相加都变成了string类型.但是c++中string功能就比较少 int转string有两种方式 1:stringstream; ; ...