Android终端Termux安装Sanic

本文介绍了在Android终端Termux中安装Sanic的过程,包括解决安装过程中遇到的python-dev和make工具的缺失问题。Sanic是一个基于Python的异步Web框架,依赖于uvloop和libuv来提升性能。通过安装python环境,解决相关依赖问题,最终成功运行Sanic测试服务。同时,文章还简要讨论了python-dev、make、makefile以及cmake在软件开发中的作用。
摘要由CSDN通过智能技术生成

前言

Sanic是一个类似Flask的基于Python3.5 +支持 async/await 语法的异步无阻塞web框架,这意味着我们可以依靠其处理异步请求的新特性来提升服务性能。但是Sanic的速度能有这么大的提升,关键还是Sanic使用了uvloop作为asyncio的事件循环。uvloop基于libuv,libuv是一个使用C语言实现的高性能异步I/O库,uvloop用来代替asyncio默认事件循环,可以进一步加快异步I/O操作的速度

安装

使用Termux安装Sanic并不像安装Flask只要一条命令pip install flask就可以安装成功,在安装的过程中出现了一些错误

安装python环境

pkg install clang python

安装Sanic

pip install sanic

Termux会自动下载并安装Sanic的依赖包:httptools、ujson、uvloop、aiofiles、websockets、multidict

在安装httptools包时出现如下错误

httptools/parser/parser.c:4:10: fatal error: 'Python.h' file not found
    #include "Python.h"
             ^~~~~~~~~~
    1 error generated.
error: command 'i686-linux-android-clang' failed with exit status 1

主要错误应该是缺失了i686-linux-android-clang的文件,错误处理只要安装python-dev:

pkg install python-dev

ujson包同样需要安装python-dev,如果已经安装了就可以正常安装成功

接下来在安装uvloop包时出现如下错误:

configure: creating ./config.status
config.status: creating Makefile
config.status: creating libuv.pc
config.status: executing depfiles commands
config.status: executing libtool commands
error: [Errno 2] No such file or directory: 'make': 'make'

这个错误应该是没有安装make工具,安装make工具后就可以了:

pkg install make

aiofiles、websockets、multidict这三个包不需要额外安装其它扩展工具

前面的依赖包都安装成功,最后安装Sanic将不会在出现错误

测试安装

from sanic import Sanic

导入Sanic包没有出现错误则表示安装成功

将以下测试代码保存到hello.py文件,然后把文件放至Termux的当前目录Home,当前目录可以使用命令pwd查看路径

from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route('/')
async def test(request):
    return json({'hello': 'world'})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

运行以下命令,启动Sanic服务

python hello.py

在浏览器中输入:http://localhost:8000 访问

 

知识扩展

python-dev包是什么

linux发行版通常会把类库的头文件和相关的pkg-config分拆成一个单独的xxx-dev(el)包

python-dev或python-devel称为是python的开发包
其中包括了一些用C/Java/C#等编写的python扩展在编译的时候依赖的头文件等信息
比如我们在编译一个用C语言编写的python扩展模块时,而这个类库内含有#include<Python.h>等这样的语句,因为需要编译调用python api的c/c++文件,因此我们就需要先安装python-dev开发包

python-dev的包在centos的yum中不叫python-dev,而是python-devel

 

make是什么

make是一个命令工具,是一个解释makefile中指令的命令工具。它可以简化编译过程里面所下达的指令,当执行 make 时,make 会在当前的目录下搜寻 Makefile (or makefile) 这个文本文件,执行对应的操作。make 会自动的判别原始码是否经过变动了,而自动更新执行档

为什么要使用make

假设,现在一个项目里面包含了100个程序文件,如果要对这个项目进行编译,那么光是编译指令就有100条。如果要重新进行编译,那么就又得像之前一样重新来一遍。这样重复且繁琐的工作实在是让我们很不爽啊。所以,用make来进行操作,间接调用gcc岂不是很方便?如果我们更动过某些原始码档案,则 make 也可以主动的判断哪一个原始码与相关的目标文件档案有更新过, 并仅更新该档案。这样可以减少重新编译所需要的时间,也会更加方便

makefile又是干什么的

makefile其实就是一个文档,里面定义了一系列的规则指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,它记录了源文件如何编译的详细信息!makefile一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率

cmake是什么

CMake是一种跨平台编译工具,比make更为高级,使用起来要方便得多。CMake主要是编写CMakeLists.txt文件,然后用cmake命令将CMakeLists.txt文件转化为make所需要的makefile文件,最后用make命令编译源码生成可执行程序或共享库

make和cmake的区别

makefile在一些简单的工程完全可以人工下手,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。这时候就出现了CMake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值