Python脚本在Linux上怎么运行
1、一般而言,Linux现在的所有版本都自带python的。
2、目前应该所有的版本都支持Python27,如Ubuntu的1610和1704目前已经支持Python3了。
3、如何运行Python。
#在命令终端直接运行~ python --version
Python 353
#下面就提示当前的Python版本,如果你要运行一个python脚本。
python /xxx/xx/mypypy
#这样就可以运行了,你可以看看这里,学习一下新手必须掌握的Linux命令。wwwlinuxprobecom/chapter-02html #
from handle import Handle
如果日志还是报错没有模块
那就安装一个
# pip install handle
Collecting handle
/usr/local/lib/python27/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_py:90: InsecurePlatformWarning: A true SSLContext object is not available This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail For more information, see https://urllib3readthedocsorg/en/latest/securityhtml#insecureplatformwarning
InsecurePlatformWarning
Downloading handle-010targz
Collecting click==66 (from handle)
Downloading click-66-py2py3-none-anywhl (71kB)
100% |████████████████████████████████| 73kB 114kB/s
Collecting colorlog==270 (from handle)
Downloading colorlog-270-py2py3-none-anywhl
Collecting jac==0153 (from handle)
Downloading jac-0153zip
Requirement already satisfied (use --upgrade to upgrade): jinja2==28 in /usr/local/lib/python27/site-packages (from handle)
Collecting livereload==241 (from handle)
Downloading livereload-241-py2-none-anywhl
Collecting pygments==213 (from handle)
Downloading Pygments-213-py2py3-none-anywhl (755kB)
Python对日常运维工作来说比Perl和Bash都弱。Python做Web开发也比PHP麻烦很多。我个人的感觉Python更像Java,不适合与Perl/Bash比较。
我个人常用的运维工具是Bash为主,Python主要用来做一些算法演算。因为我的日常维护任务以文件系统维护为主,比较语言要结合场景。
绝大部分的应用需求,所有语言都能完成,但是难易程度不同,选择语言要看开发者的熟练程度和需求的复杂程度。
如果只是“grep”需求,你选Bash执行grep最简单,如果稍复杂就用awk,再复杂就用perl。用更通用的语言就是费力不讨好。
如果是个矩阵计算需求,perl的数组能把你折腾死,bash的管道能把机器折腾死。
我下面这个观点一定会有争议(尤其是PHPer),我倾向于把高级语言分成三类:
1) 底层的C/C++
这是可以写操作系统,操作硬件的。可以解决一切问题,但是绝大多数互联网项目不应该用。
2) 中性的Java/Python/Ruby/NET系列
这是做项目的主要语言,平衡开发效率和执行效率。没有明显的亮点,亦没有明显的缺点。
3) 特长的PHP/Bash/Perl
在某些特定领域,应该选择这些有特长的语言。随着需求越来越全面,语言的短板越用越多,应该控制扩散。
基于python的web开发,这里我们使用linux为开发环境,搭建基于nginx + webpy + fastcgi
有些基本基本概念解释下,哈哈,因为我不懂
1wsgi为Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口
2uwsgi,另一种python定义的web服务器和web应用的接口
3REST服务,REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
4CRUD是指在做计算处理时的增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中数据库或者持久层的基本操作功能
以下内容主要来自
http://webpyorg/cookbook/fastcgi-nginx
需要的软件
nginx 07以上版本,我使用的是nginx 092
webpy我使用的webpy-037
spawn-fcgi 163
flup 10
nginx的配置请参看官方文档
spawn-fcgi是lighttpd的一个子项目用于多进程管理
webpy和flup安装方式为解压后运行python setuppy install
安装编写indexpy
点击(此处)折叠或打开
#!/usr/bin/env python
# -- coding: utf-8 --
import web
urls = ("/", "hello")
app = webapplication(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
webwsgirunwsgi = lambda func, addr=None: webwsgirunfcgi(func, addr)
apprun()
注意indexpy需要使用命令chmod +x indexpy加入可执行权限
将indexpy放入/data/www(我所使用的目录你可以修改)
修改nginxconf配置
index要加入indexpy
Nginx的配置加入
点击(此处)折叠或打开
location / {
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/11;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127001:9002;
}
使用Spawn-fcgi
spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002
如果报错为126,说明indexpy没有可执行权限
netstat -lnp | grep 9002参考是否启动成功
我运行的实际为
spawn-fcgi -d /data/www -f /data/www/indexpy -a 127001 -p 9002 -F 2
启动2个进程
启动nginx
浏览器输入地址
成功结束
你要重新启动你服务器上的python进程才行,如果你的python是在像wsgi、fastCGI、mod_python这样在httpd后面的,就重新启动你的httpd就好了。
现在一般情况下服务器端的python都是先启动一个或几个进程,把程序读到内存里等着request来,不会等到request来的时候临时去读py,这样速度会快一些,但是另一方面就是你新修改的程序不可能反应到内存里。
以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支持,首先在安装OpenCV前安装必要的组件,一般列表如下:
1、gcc g++一般系统自带
2、cmake 编译OpenCV时使用,需要手动安装
3、pkg-config命令,一般系统自带,如果缺少,使用 yum -y install pkg-config 安装
4、Python 2x,系统自带
5、NumPy 一个用于大型矩阵处理的库,这个必须!如果不安装则后面OpenCV安装后也编译不出来Python的模块,其他库可以后来安装
最后一步是安装OpenCV
在保证前4项没问题的情况下,开始安装NumPy模块,官网下载地址为:http://wwwscipyorg/scipylib/downloadhtml
进入SourceForge下载,地址为:https://sourceforgenet/projects/numpy/
直接点击Download即可下载,下载成功之后上传到Linux服务器,安装过程很简单,解压后直接安装即可(之前要确保python-devel已经安装)
unzip numpy-1111zip
cd numpy-1111/
python setuppy install
另外numpy还可以去python官网下载:https://pypipythonorg/pypi/numpy
安装成功之后接下来进一步安装OpenCV,官方网站为:http://opencvorg/进入后点击DOWNLOADS来到下载界面:http://opencvorg/downloadshtml,这里下载2413的版本
下载完之后上传到Linux,执行接下来的安装:
unzip opencv-2413zip
cd opencv-2413/
cmake -D WITH_GTK_2_X=ON -D CMAKE_INSTALL_PREFIX=/usr/local
make # make -j4表示开4个线程来进行编译
make install
安装过程时间可能会有点长10~30分钟左右,编译完成之后OpenCV就安装到了指定的/usr/local下面的一些目录中,库文件就安装到了/usr/local/lib下,Python的模块安装位置是:/usr/local/lib/python27/site-packages,执行 ls /usr/local/lib/python27/site-packages/ 可以看到两个文件,一个是cv2so一个是cvpy
这两个文件在刚才opencv-2413编译的目录下面lib/下也存在着两个python模块文件,但是不幸的是现在并不能直接使用,原因是我们操作系统python依赖包的位置是/usr/lib/python27下,所以刚才如果编译到/usr下是直接可以用的,不过这个也不重要,只要我们将这两个文件复制到正确的目录下,那么就能正常使用OpenCV的功能了,执行: cp /usr/local/lib/python27/site-packages/cv /usr/lib/python27/site-packages/ 复制过去之后进入python交互式界面执行 import cv2 没有报错则安装成功
可以写一个测试的小案例,在服务器上有一张是testjpg现在简单的使用cv2模块解析成图像矩阵,然后再写入磁盘文件中,代码如下:
#!/usr/bin/python
# -- coding:utf-8 --
import cv2
image = cv2imread("testjpg")
print image
cv2imwrite("test1jpg",image)
这里将原有的testjpg生成test1jpg,
执行 python cvtestpy 执行完后会发现输出好多矩阵变量,并且生成了test1jpg文件
生成的文件有可能比原文件大也有可能小,具体根据图像来决定,现在查看一下内容,和之前是一样的
0条评论