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 ...
随机推荐
- 4445: [Scoi2015]小凸想跑步 半平面交
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=4445 题解: 设点坐标,利用叉积可以解出当p坐标为\((x_p,y_p)\)时,与边i- ...
- iOS NET Error Code
see NSURLError.h Define NSURLErrorUnknown = -, NSURLErrorCancelled = -, NSURLErrorBadURL = -, NSURLE ...
- mac下无法远程桌面连接win10的解决办法
原文链接:http://www.hangge.com/blog/cache/detail_899.html 原来在Mac OSX下远程win7系统很正常,后来把windows系统升级成了win10,再 ...
- java代码GUI简单的。。。
总结:觉得 package com.da; import java.awt.*; //逆向思维:important //创建一个String对象的数组,然后执行读取文本,把文本每一行存入数组,它将读取 ...
- JavaScript-Tool:template
ylbtech-JavaScript-Tool: 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 作者:ylbtech出处:http:/ ...
- 与input有关的一些操作
单选 : 通过name指定为一组,只能选择一个 一组一个选项 <input type=" name="sex"/>男 <input type=&quo ...
- Linq to Object之非延迟标准查询操作符
非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用. 1.ToArray操作符 ToArray操作符用于将一个输入序列转换成一个数组. 方法原型: ...
- CURL访问举例
<?php function request($url, $params = [], $requestMethod = 'GET', $jsonDecode = true, $headers = ...
- nodejs PK php全方位比较PHP的Node.js的优缺点
全方位比较PHP的Node.js的优缺点 http://www.techug.com/php-vs-node-js
- Spring入门第三课
属性注入 属性注入就是通过setter方法注入Bean的属性值或依赖的对象. 属性植入使用<property>元素,使用name属性指定Bean的属性名称,value属性或者<val ...