Python有没有能够打包之后能够在没装Python的Linux平台上运行的方法么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xseven007
V2EX    Python

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

  •  
  •   xseven007
    xseven007 2013-08-08 21:00:58 +08:00 15602 次点击
    这是一个创建于 4448 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Python有没有能够打包之后能够在没装Python的Linux平台上运行的方法么?python可以用py2exe打包成exe在没有python的Windows机器上运行,那么有没有方法打包成能够在Linux上运行的方法,也许你们会说Linux安装python很方便,但是路由器这样的小储存的东西,能精简尽量精简.
    33 条回复    1970-01-01 08:00:00 +08:00
    shibo501c
        1
    shibo501c  
       2013-08-08 21:43:51 +08:00
    虽然不知道怎么弄, 但是感觉好像sublime text2 就是内置了一个python
    jjx
        2
    jjx  
       2013-08-08 21:58:34 +08:00
    cx_freeze
    binux
        3
    binux  
       2013-08-08 22:10:42 +08:00
    pyinstaller
    toctan
        4
    toctan  
       2013-08-08 22:54:17 +08:00 via Android
    主流的 Linux 发行版应该都装了 python 吧
    fucker
        5
    fucker  
       2013-08-08 23:03:31 +08:00
    归根结底还是要变成二进制来跑,没有合适的python,无论怎么打包都不可能运行。就好比哪怕是py2exe打包了一个x86架构下的py程序,放在没有定制过的wince上面也是跑不了的。同样的可以类比一下,64位linux下编译的C程序放在32为linux上运行不了,一个道理。
    楼主你所谓的打包了,就是转为二进制了,要看机器。如果是路由,我估计不行。
    fucker
        6
    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
        7
    xseven007  
    OP
       2013-08-09 08:55:30 +08:00
    @toctan
    @fucker 在路由器平台上,不是所有的都有足够空间安装python的,所以希望用打包的方式.我需要的不是一个能够拥有完整模块的python,而是根据.py文件需要的模块进行打包的.这样就能最大程度精简文件.交叉编译不是问题.都能做.有没有好的方案,能够打包产2~4MB的那种,类似于goagent的打包方法,包很小
    vilic
        8
    vilic  
       2013-08-09 10:02:24 +08:00
    IronPython + Mono? 我随便扯下。
    fucker
        9
    fucker  
       2013-08-09 12:35:43 +08:00 via iPhone
    @xseven007 我真没有,sorry
    xingxiucun
        10
    xingxiucun  
       2013-08-09 13:37:39 +08:00
    virtual env ?
    funagi
        11
    funagi  
       2013-08-09 13:55:31 +08:00
    买个能插U盘的路由器最有效最彻底最省时间的解决办法
    PotatoBrother
        12
    PotatoBrother  
       2013-08-09 14:04:38 +08:00 via iPhone
    py2exe打包出来文件一堆,用不惯
    kimjxie
        13
    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
        14
    xseven007  
    OP
       2013-08-09 15:00:18 +08:00 via Android
    @kimjxie 真正打包的是Python.zip。我想要的那种效果应该和他打包的样式差不多,win下用py2exe打包成一个.exe和一个zip,Linux下我希望打包成一个二进制文件,和一个zip,但是不知道用什么方式打包。。
    xseven007
        15
    xseven007  
    OP
       2013-08-09 15:01:20 +08:00 via Android
    @jjx 这个我考虑过,但是要先在mips的路由器上编译好这个模块才能打包,比较伤的是路由器编译这个是硬伤。。
    feuvan
        16
    feuvan  
       2013-08-09 15:18:32 +08:00
    看Sublime Text 2的打包,Python在一个zip里
    Ever
        17
    Ever  
       2013-08-09 15:55:43 +08:00
    要是跨编链都完善,拿c写个loader文件,或者用cython --embed example.py生成c文件,编译的时候把libpython.a搞进去,再打包下需要的py文件,应该就没问题了
    0bit
        18
    0bit  
       2013-08-09 17:02:10 +08:00
    有没装Python的Linux?
    xseven007
        19
    xseven007  
    OP
       2013-08-09 17:05:13 +08:00
    @0bit Linux内核的路由器..
    @Ever 我试试,首先我要研究一下怎么写...
    kimjxie
        20
    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, 打包与否已经不重要了
    xseven007
        21
    xseven007  
    OP
       2013-08-09 20:37:59 +08:00
    @kimjxie 很多国产路由器刷Tomato,有16M的rom.可以放个打包好的吧
    yangff
        22
    yangff  
       2013-08-09 21:07:57 +08:00
    Py2Exe也是带了个python的。。
    kimjxie
        23
    kimjxie  
       2013-08-09 23:24:35 +08:00
    @xseven007 这个容量应该没啥问题了 hoho
    RainFlying
        24
    RainFlying  
       2013-08-09 23:32:45 +08:00
    你带上一份 Python 解释器就没问题了
    再给一个启动脚本
    xseven007
        25
    xseven007  
    OP
       2013-08-10 07:49:45 +08:00 via Android
    @kimjxie 这个容量还是不能用安装包安装,只能用根据py文件需要的模块打包的简洁版本。。
    @RainFlying 这个是不是就更麻烦了啊
    jinfan1009
        26
    jinfan1009  
       2013-08-17 15:34:36 +08:00
    python能单独运行?python是解释型语言,必须要有解释器才行吧。
    xseven007
        27
    xseven007  
    OP
       2013-08-17 19:35:29 +08:00
    @jinfan1009 我的意思就是把.py文件里需要的模块压缩成zip然后用二进制文件调用,类似win下的py2exe打包方式
    itfanr
        28
    itfanr  
       2013-08-17 19:46:39 +08:00
    @xseven007 肯定不行啊!python是动态语言OK?你研究下linux下二进制文件运行原理吧。我也不懂
    vicence
        29
    vicence  
       2013-09-01 23:27:55 +08:00
    @funagi http://www.zjdg.com/forum.php?mod=viewthread&tid=371988&extra=page%3D1
    头一回听说有可以插U盘的路由器,查了一下真有
    flowerfly
        30
    flowerfly  
       2013-09-01 23:54:32 +08:00
    xavierskip
        31
    xavierskip  
       2013-09-24 23:53:31 +08:00   1
    你是在问这个么?

    http://www.pyinstaller.org/

    win,linux,os x 都可以哦。
    Matrix24
        32
    Matrix24  
       2013-12-30 15:46:50 +08:00
    @xavierskip 我在OS X上打包的程序,运行没有反应,可用Py2app却可以,请问为什么?
    xavierskip
        33
    xavierskip  
       2013-12-30 16:02:19 +08:00
    @Matrix24 不清楚,我也没mac
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     931 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 22:49 PVG 06:49 LAX 15:49 JFK 18:49
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86