Python脚本在Linux上怎么运行,第1张

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文件

生成的文件有可能比原文件大也有可能小,具体根据图像来决定,现在查看一下内容,和之前是一样的

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » Python脚本在Linux上怎么运行

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情