Python有没有能够打包之后能够在没装Python的Linux平台上运行的方法么?

2013-08-08 21:00:58 +08:00
 xseven007
Python有没有能够打包之后能够在没装Python的Linux平台上运行的方法么?python可以用py2exe打包成exe在没有python的Windows机器上运行,那么有没有方法打包成能够在Linux上运行的方法,也许你们会说Linux安装python很方便,但是路由器这样的小储存的东西,能精简尽量精简.
14984 次点击
所在节点    Python
33 条回复
shibo501c
2013-08-08 21:43:51 +08:00
虽然不知道怎么弄, 但是感觉好像sublime text2 就是内置了一个python
jjx
2013-08-08 21:58:34 +08:00
cx_freeze
binux
2013-08-08 22:10:42 +08:00
pyinstaller
toctan
2013-08-08 22:54:17 +08:00
主流的 Linux 发行版应该都装了 python 吧
fucker
2013-08-08 23:03:31 +08:00
归根结底还是要变成二进制来跑,没有合适的python,无论怎么打包都不可能运行。就好比哪怕是py2exe打包了一个x86架构下的py程序,放在没有定制过的wince上面也是跑不了的。同样的可以类比一下,64位linux下编译的C程序放在32为linux上运行不了,一个道理。
楼主你所谓的打包了,就是转为二进制了,要看机器。如果是路由,我估计不行。
fucker
2013-08-08 23:08:22 +08:00
再补一句,用arm-linux-gcc编译的linux内核在arm板子上跑python,python源码必须也用arm-linux-gcc交叉编译,然后你的 .py 程序就无所谓了。如果在x86的linux上打包 .py 为二进制,那么即便是有打包的方法,放在arm linux上也跑不了。。

我说的比较乱,楼主你缕一缕。。。我其实也不知道能不能打包,如果能打包,那也得在这个路由的架构下打包,你电脑所使用的平台打包是运行不了的。。
xseven007
2013-08-09 08:55:30 +08:00
@toctan
@fucker 在路由器平台上,不是所有的都有足够空间安装python的,所以希望用打包的方式.我需要的不是一个能够拥有完整模块的python,而是根据.py文件需要的模块进行打包的.这样就能最大程度精简文件.交叉编译不是问题.都能做.有没有好的方案,能够打包产2~4MB的那种,类似于goagent的打包方法,包很小
vilic
2013-08-09 10:02:24 +08:00
IronPython + Mono? 我随便扯下。
fucker
2013-08-09 12:35:43 +08:00
@xseven007 我真没有,sorry
xingxiucun
2013-08-09 13:37:39 +08:00
virtual env ?
funagi
2013-08-09 13:55:31 +08:00
买个能插U盘的路由器——最有效最彻底最省时间的解决办法
PotatoBrother
2013-08-09 14:04:38 +08:00
py2exe打包出来文件一堆,用不惯
kimjxie
2013-08-09 14:29:11 +08:00
@xseven007 Python的打包实际上就是提供Python运行环境提供程序入口。简单来说libpython2.7.so或者python27.dll是必须包含在目标文件里的.
标准版本里windows的2M多点,linux6M多点, 看样子windows下更接容易近目标一点.

另外, goagent那个goagent.exe是msvc开发的吧, 所以能做到100多K,真正Python的程序是那个proxy.exe, 4M多点.

少数几个tinypy python-for-arm-linux这样的都是老项目目前已经很久不更新了。
xseven007
2013-08-09 15:00:18 +08:00
@kimjxie 真正打包的是Python.zip。我想要的那种效果应该和他打包的样式差不多,win下用py2exe打包成一个.exe和一个zip,Linux下我希望打包成一个二进制文件,和一个zip,但是不知道用什么方式打包。。
xseven007
2013-08-09 15:01:20 +08:00
@jjx 这个我考虑过,但是要先在mips的路由器上编译好这个模块才能打包,比较伤的是路由器编译这个是硬伤。。
feuvan
2013-08-09 15:18:32 +08:00
看Sublime Text 2的打包,Python在一个zip里
Ever
2013-08-09 15:55:43 +08:00
要是跨编链都完善,拿c写个loader文件,或者用cython --embed example.py生成c文件,编译的时候把libpython.a搞进去,再打包下需要的py文件,应该就没问题了
0bit
2013-08-09 17:02:10 +08:00
有没装Python的Linux?
xseven007
2013-08-09 17:05:13 +08:00
@0bit Linux内核的路由器..
@Ever 我试试,首先我要研究一下怎么写...
kimjxie
2013-08-09 17:20:50 +08:00
@xseven007 有段时间没用 看来我存档里的版本有些年头了啊
瞅了瞅新版本 本质上是没有区别的 新的方式把核心代码做成了平台无关 更好发布

如果仅仅是说goagent打包这个问题,可以看看https://github.com/goagent/pybuild 和https://github.com/goagent/taskbar 这两个goagent名下的工具项目
看上去goagent是用的py2exe

实际上我之前想说的是关键是,不管目前何种方式(pyinstaller,py2exe,cx_freeze)的打包,python所需要的动态资源库文件是必须的,这个文件的大小和平台问题解决了,才能继续后面的问题。
换句话说,如果能容纳下基本的python和libpython.so, 打包与否已经不重要了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/78476

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX