利用content内容共享接口来减少python应用的大小

原创 2017年03月01日 09:48:19

我们在先前的文章“利用ubuntu-app-platform提供的platform接口来减小Qt应用大小”已经了解到如何运用platform interface来减小Qt应用的大小。这里面的实现原理就是利用content分享来实现的。在今天的教程中,我们来运用一个开发者自己开发的python的interpreter snap安装包来实现同样的东西。对于一些系统来说,如果想要用最新的python版本,或者是想让很多的python应用都使用同一个python的安装,而不用分别把python的环境打入到每一个snap应用的包中,我们可以采用今天使用的方法。

这个python interpreter的snap应用的整个源码在:

https://github.com/jhenstridge/python-snap-pkg

我们可以通过如下的方式来得到:

$ git clone https://github.com/jhenstridge/python-snap-pkg


整个项目的源码如下:

$ tree -L 3
.
├── examples
│   └── hello-world
│       ├── hello.py
│       ├── hello.sh
│       └── snap
├── README.md
├── snap
│   └── snapcraft.yaml
└── src
    └── sitecustomize.py

在上面的snap目录中就是描述如何把python通过content sharing interface分享出去以供其它的开发者使用。开发者已经把编译好的snap上传到我们的商店了。我们可以通过如下的方式来进行安装:

$  snap install --edge python36-jamesh

我们可以到examples/hello-world目录下直接打入如下的命令:

$ snapcraft 
Preparing to pull hello-world 
Pulling hello-world 
Preparing to build hello-world 
Building hello-world 
Staging hello-world 
Priming hello-world 
Snapping 'hello-world' |                                                             
Snapped hello-world_0.1_all.snap

我们可以看到生产的.snap文件。我们可以使用如下的命令:

$ sudo snap install --dangerous hello-world_0.1_all.snap

来安装这个应用。并使用如下的命令来进行连接和运行:

$ snap connect hello-world:python3 python36-jamesh:python3
$ hello-world
Hello world!

我们可以看到我们的hello-world应用被成功运行。

hello.py

print("Hello world!")

我们可以检查一下我们最后的hello-world_0.1_all.snap文件大小:

$ ls -alh
total 28K
drwxrwxr-x 3 liuxg liuxg 4.0K 3月   1 09:45 .
drwxrwxr-x 3 liuxg liuxg 4.0K 3月   1 09:19 ..
-rw-rw-r-- 1 liuxg liuxg   28 3月   1 09:19 .gitignore
-rw-rw-r-- 1 liuxg liuxg   22 3月   1 09:19 hello.py
-rwxrwxr-x 1 liuxg liuxg   60 3月   1 09:19 hello.sh
-rw-r--r-- 1 liuxg liuxg 4.0K 3月   1 09:39 hello-world_0.1_all.snap
drwxrwxr-x 2 liuxg liuxg 4.0K 3月   1 09:23 snap

整个的.snap文件只有小小的4k大小。这比较以前的那种方法,显然这种通过content sharing的方法能够大大减少我们的python应用的大小。当然这个共享的python包也可以为其它的python应用所使用。

你甚至可以通过如下的方式来安装自己喜欢的pip包:

$ python36-jamesh.pip3 install --user django

这个django包的内容将会被安装到 python36-jamesh包里的$SNAP_USER_COMMON目录之中





版权声明:本文为博主原创文章,未经博主允许不得转载。

Android APP 热修复方案

1、百川Hotfix 不仅仅只基于AndFix,而是灵活切换热部署和冷部署的方案;实现了资源、SO文件、类修复的实时生效,同时采用了傻瓜式接入方案,完全不侵入打包过程,对用户提供了可视化的UI界面打补...
  • changlei_shennan
  • changlei_shennan
  • 2017年06月30日 10:36
  • 132

:after伪类+content内容生成经典应用举例

转自:http://www.zhangxinxu.com/wordpress/?p=1136 一、简单说说content内容生成 content内容生成就是通过content属性生成内...
  • chelen_jak
  • chelen_jak
  • 2014年03月05日 15:41
  • 2215

android ContentProvider简单实现不同应用间的数据共享

ContentProvider作为android的四大组件之一的一种,一般它的作用往往是用在几个不同app应用间的数据共享,而且它提供给外界访问的接口也是统一的。关于ContentProvider的基...
  • u014649337
  • u014649337
  • 2015年03月12日 17:56
  • 971

使用ContentProvider实现数据共享

1、数据共享标准:ContentProvider简介 ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,允许...
  • u013847120
  • u013847120
  • 2015年05月05日 20:23
  • 905

客户端调用服务端接口减少请求数据容量的优化例子

本文提供一种可以把大量数据转换为小容量数据传输的方法,但需要加入更多的运算。因此实际开发中需根据实际需求来判断是否适合用时间换空间,或空间换时间的算法。提高接口请求的速度。...
  • fdipzone
  • fdipzone
  • 2016年05月30日 20:34
  • 10043

Unity3D之如何将包大小减少到极致

http://www.luzexi.com/unity3d%E4%B9%8B%E5%A6%82%E4%BD%95%E5%B0%86%E5%8C%85%E5%A4%A7%E5%B0%8F%E5%87%8...
  • poem_of_sunshine
  • poem_of_sunshine
  • 2014年10月15日 14:07
  • 6352

Android开发——减小APK大小

0.前言APK的大小对APP的加载速度,使用内存大小和消耗功率多少有一定影响。如何减小APK的大小对于Android开发者是一个永恒的话题。那么首先就来了解一下APK的组成结构。 1.APK的组成结构...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年08月13日 18:50
  • 16502

第2章第1节练习题3 共享栈的基本操作

设有两个栈s1,s2都采用顺序栈方式,并且共享一个存储区[0,…,MaxSize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的方式。...
  • u013595419
  • u013595419
  • 2016年01月15日 15:59
  • 1075

ugui学习——可动态改变Content大小的ScrollView

首先,scrollView根据需要的可以自己改。Horizontal代表水平方向滚动,vertical代表竖直方向。 MovementType 移动模式 Inertia 鼠标放下后还可以动一点点。 s...
  • gcs6564157
  • gcs6564157
  • 2017年02月05日 23:13
  • 2303

Unity3D之如何将包大小减少到极致

转自:http://www.luzexi.com/unity3d之如何将包大小减少到极致/ Unity3D之如何将包大小减少到极致 发表于2014年6月6日由陆泽西 Unity3D之...
  • evane1890
  • evane1890
  • 2016年07月18日 12:41
  • 1137
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用content内容共享接口来减少python应用的大小
举报原因:
原因补充:

(最多只允许输入30个字)