关闭

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

1317人阅读 评论(0) 收藏 举报
分类:

我们在先前的文章“利用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目录之中





0
0

猜你在找
【直播】机器学习&深度学习系统实战(唐宇迪)
【直播】Kaggle 神器:XGBoost 从基础到实战(冒教授)
【直播回放】深度学习基础与TensorFlow实践(王琛)
【直播】计算机视觉原理及实战(屈教授)
【直播】机器学习之凸优化(马博士)
【直播】机器学习之矩阵(黄博士)
【直播】机器学习之概率与统计推断(冒教授)
【直播】机器学习之数学基础
【直播】TensorFlow实战进阶(智亮)
【直播】深度学习30天系统实训(唐宇迪)
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:434082次
    • 积分:7779
    • 等级:
    • 排名:第2584名
    • 原创:344篇
    • 转载:7篇
    • 译文:0篇
    • 评论:250条
    文章分类
    最新评论