pythonlinux部署
一般linux系统都自带python2,你是要装python3?
给你centos下源码安装py3 的例子把。
如果已经安装好了python34
sudo yum remove python34
编译安装
python官网只为Linux提供了源码,因此我下载python3.6.1的源码压缩包
第一步,CentOS装好openssl静态库
键入以下命令: yum install -y openssl-static
若未装该静态库会导致python3自带的pip3安装失败
第二步,编译python3源码
0. CentOS安装GCC和wget yum install -y gcc,wget
yum groupinstall "Development tools"
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
1. 先解压python3的源码包 wget http://python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
tar xf Python-3.6.1.tar.xz
2. 配置安装路径 cd Python-3.6.1 //进入python3源码解压后的文件夹
./configure --prefix=/usr/local/python3 //默认配置文件并设置安装路径
3. 编译python3源码 make
4. 安装 make install
最终若无错误提示,说明安装成功
5. 添加文件链接 安装后键入命令?python3?提示不存在该命令,这是因为我们自定义了安装目录,因此需要添加文件链接,命令如下:
ln -s /usr/local/python3/bin/python3 /usr/bin/python3
6. 测试 键入命令:
python3 -V
会输出python3版本信息,说明python3安装完成
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
㈡ python linux怎么操作
1. os 模块
1.1. os模块的exec方法族
Python的exec系统方法同Unix的exec系统调用是一致的。这些方法适用
于在子进程中调用外部程序的情况,因为外部程序会替换当前进程的代码,不会返回。( 这个看了点 help(os) --> search
"exec" 的相关介绍,但是没太搞明白咋使用)
1.2. os模块的system方法
system方法会创建子进程运行外部程序,方法只返回外部程序的运行结果。这个方法比较适用于外部程序没有输出结果的情况。
[python]
view plain
>>> import os
>>> os.system("echo \"Hello World\"") # 直接使用os.system调用一个echo命令
Hello World ——————> 打印命令结果
0 ——————> What's this ? 返回值?
>>> val = os.system("ls -al | grep \"log\" ") # 使用val接收返回值
-rw-r--r-- 1 root root 6030829 Dec 31 15:14 log ——————> 此时只打印了命令结果
>>> print val
0 ——————> 注意,此时命令正常运行时,返回值是0
>>> val = os.system("ls -al | grep \"log1\" ")
>>> print val
256 ——————> 使用os.system调用一个没有返回结果的命令,返回值为256~
>>>
注意:上面说了,此方法脂肪会外部程序的结果,也就是os.system的结果,所以如果你想接收命令的返回值,接着向下看~
1.3. os模块的popen方法
当需要得到外部程序的输出结果时,本方法非常有用,返回一个类文件对象,调用该对象的read()或readlines()方法可以读取输出内容。比如使用urllib调用Web API时,需要对得到的数据进行处理。os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 如a=os.popen(cmd).read()
[python]
view plain
>>> os.popen('ls -lt') # 调用os.popen(cmd)并不能得到我们想要的结果
<open file 'ls -lt ', mode 'r' at 0xb7585ee8>
>>> print os.popen('ls -lt').read() # 调用read()方法可以得到命令的结果
total 6064
-rwxr-xr-x 1 long long 23 Jan 5 21:00 hello.sh
-rw-r--r-- 1 long long 147 Jan 5 20:26 Makefile
drwxr-xr-x 3 long long 4096 Jan 2 19:37 test
-rw-r--r-- 1 root root 6030829 Dec 31 15:14 log
drwxr-xr-x 2 long long 4096 Dec 28 09:36 pip_build_long
drwx------ 2 Debian-gdm Debian-gdm 4096 Dec 23 19:08 pulse-gylJ5EL24GU9
drwx------ 2 long long 4096 Jan 1 1970 orbit-long
>>> val = os.popen('ls -lt').read() # 使用变量可以接收命令返回值
>>> if "log" in val: # 我们可以使用in来判断返回值中有木有一个字符串
... print "Haha,there is the log"
... else:
... print "No,not happy"
...
Haha,there is the log
2. commands 模块
使用commands模块的getoutput方法,这种方法同popend的区别在于popen返回的是一个类文件对象,而本方法将外部程序的输出结果当作字符串返回,很多情况下用起来要更方便些。
主要方法:
* commands.getstatusoutput(cmd) 返回(status, output)
* commands.getoutput(cmd) 只返回输出结果
* commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法
[python]
view plain
long@zhouyl:/tmp/tests$ python
Python 2.7.3 (default, Jan 2 2013, 16:53:07)
[GCC 4.7.2] on linux2
Type "help", "right", "credits" or "license" for more information.
>>> import commands
>>> commands.getstatusoutput('ls -lt') # 返回(status, output)
(0, 'total 5900\n-rwxr-xr-x 1 long long 23 Jan 5 21:34 hello.sh\n-rw-r--r-- 1 long long 147 Jan 5 21:34 Makefile\n-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log')
>>> commands.getoutput('ls -lt') # 返回命令的输出结果(貌似和Shell命令的输出格式不同哈~)
'total 5900\n-rwxr-xr-x 1 long long 23 Jan 5 21:34 hello.sh\n-rw-r--r-- 1 long long 147 Jan 5 21:34 Makefile\n-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log'
>>> commands.getstatus('log') # 调用commands.getoutput中的命令对'log'文件进行相同的操作
'-rw-r--r-- 1 long long 6030829 Jan 5 21:34 log'
>>>
3. subprocess模块
根据Python官方文档说明,subprocess模块用于取代上面这些模块。有一个用Python实现的并行ssh工具—mssh,代码很简短,不过很有意思,它在线程中调用subprocess启动子进程来干活。
[python]
view plain
>>> from subprocess import call
>>> call(["ls", "-l"])
subprocess与system相比的优势是它更灵活(你可以得到标准输出,标准错误,“真正”的状态代码,更好的错误处理,等..)。我认为使用os.system已过时,或即将过时。
㈢ 如何在linux下安装python
1、linux下安装python3
a、 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件)
1
2
yum groupinstall 'Development Tools'
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel
2 下载 Python3.5代码包
wget https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz
在安装包中有一个README的文件,里面有写如何安装
tar Jxvf Python-3.5.0.tar.xz
cd Python-3.5.0
./configure --prefix=/usr/local/python3
make && make install
提示:Ignoring ensurepip failure: pip 7.1.2 requires SSL/TLS
这是原因没有安装或升级oenssl:
yum install openssl-devel
再次重复编译方案python3.5:
最终如下:
提示同时成功安装pip-7.12与setuptools!
pip3与pip都提示没有错误!
做软链:
ln -s /usr/local/python3/bin/pip3.5 /usr/local/bin/pip
升级pip到最新版本:
pip install --upgrade pip
pip安装成功啦!
注:--no-check-certificate 表示安装时“不检查证书”,不加上可能无法安装。
2.安装包
requests包:
pip install requests
pyquery包:
pip install pyquery
pymysql包:
pip install pymysql
㈣ 学Python一定要Linux系统吗
并不是说学Python一定要Linux系统,Windows系统也可以,只不过Linux更合适。
线上服务器99%都是Linux系统,也就是说都是基于Linux系统的,比如centos,红帽,ubuntu等Linux系统。为什么会选择Linux系统?大部分语言是稳定,可能Windows服务器长时间运行会出现宕机,但是Linux系统是不会的,在Linux几乎很少出现这种情况。Linux服务器可以无休止运行,具有非常好的稳定性以及高效性,因为稳定的特性受到了众多用户喜欢,使用范围广阔,并且Linux还可以提供高可靠性的服务。
其次,大量的Linux开发都是基于Python。openstack私有云,ansible自动化运维工具,fail2ban防暴力破解工具等都是基于Python语言开发的。所以要求Python开发人员对Linux有基本了解,服务器工程流程需要熟悉。
㈤ linux安装python环境
放到自己准备好的文件夹
2.解压
命令: # tar -zxvf Python-3.8.5.tgz
解压到准备好的文件内
3.进入解压后的目录,编译安装。
cd Python-3.8.5
./configure --prefix=/usr/local/python3
可能会See config.log' for more details出现See config.log' for more details错误,需要安装gcc环境
命令: yum install -y gcc
4.安装:
安装依赖环境:
首先: sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python-openssl
然后: make
最后: make install
完成 make install实际上是把生成的执行文件拷贝到之前configure命令指定的目录/usr/local/python3下。
到这里安装已经结束
5.创建软链接
ln -s /usr/tools/Python3/bin/python3 /usr/tools/python3
6.加入环境变量:
vim /etc/profile
增加: export PATH=$PATH:/usr/tools/Python/bin
:wq 退出
source /etc/profile
总结:完成上面的步骤,就完成了python在linux环境的配置。基础知识只能满足你60%的学习需求,剩下的40%就要在实战中补足,我要做的就是补充你剩下的40%。OK,这次分享就到这里了,有什么疑问可以随时留言沟通,互相学习进步!
欢迎加入QQ群:547349021
小提示:群名虽然叫selenium+unittest,但是我们不限任何测试领域的沟通交流和学习,让我们一起补足缺失的40%吧!