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
TwoBall
V2EX  ›  Python

求大牛帮忙打包下这个 Python

  •  
  •   TwoBall · 2015-03-15 00:56:31 +08:00 · 3857 次点击
    这是一个创建于 3528 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://my.oschina.net/cuilili/blog/382278
    本人完全小白,求大牛打包个exe文件或者给个食用方法。

    9 条回复    2015-03-22 05:47:40 +08:00
    manoon
        1
    manoon  
       2015-03-15 01:02:44 +08:00 via Android
    如果程序可用,你想发给其它同学炫耀一下,直接找个py2exe 不就行了。

    如果程序可用,你直接装个python,外加bs 库和其它需要的库。直接跑不就行了?

    如果程序不可用,这个,那你好好学习吧。一直debug吧。
    ynyounuo
        2
    ynyounuo  
       2015-03-15 01:44:44 +08:00 via iPad   ❤️ 1
    /t/168561
    ↑ ↑ ↑ 这个疑问是不是引刃而解了?
    loading
        3
    loading  
       2015-03-15 05:26:01 +08:00 via Android
    @ynyounuo

    嗯,楼主你好白!懂了吗?

    1楼一给出解决方法,祝好运。
    kn007
        4
    kn007  
       2015-03-15 05:43:06 +08:00   ❤️ 2
    。。。本不想浪费我这宝贵的金币的。。。但特么的还是要说两句。。。楼主。。。人家都把源码给你,你还想咋滴。
    hahasong
        5
    hahasong  
       2015-03-15 09:08:33 +08:00 via Android
    @manoon 我也有个问题想问,如果自己写的代码里引用了第三方需要安装的二进制模块,比如cipher加密库,request库等。最怎样才能打包成让用户不用安装任何包直接运行的绿色文件夹,或者像goagent那样自带运行环境,只用双击的exe
    oott123
        6
    oott123  
       2015-03-15 09:59:47 +08:00 via Android
    @hahasong 你看看 GoAgent 怎么做的不就好了…
    我记得它给出了完善的方案。还独立出来并且开源了。
    lololol233
        7
    lololol233  
       2015-03-16 11:09:31 +08:00
    @hahasong 对于纯python的模块 clone源码之后 进入目录 运行python setup.py dist egg
    找到egg文件 放入项目目录下eggs目录中 在项目初始化/__init__.py代码中加入
    curr_dir = os.path.dirname(os.path.realpath(__file__))
    eggs_dir = os.path.join(curr_dir, 'eggs')
    egg_lst = ['xxx.egg', 'abc.egg']
    egg_lst = map(lambda x: os.path.join(eggs_dir, x), egg_lst)

    c extension的话平台不同就麻烦了 估计可以交叉编译
    x14oL
        8
    x14oL  
       2015-03-22 03:08:51 +08:00
    @lololol233 你好,对于你的回复我看的不太明白。
    假如我现在要打包requests模块
    我在安装完成后,将requests模块拷贝到我的项目目录下面,然后__init__.py中添加:
    curr_dir = os.path.dirname(os.path.realpath(__file__))
    eggs_dir = os.path.join(curr_dir, 'requests')
    egg_lst = ['xxx.requests', 'abc.requests']
    egg_lst = map(lambda x: os.path.join(requests_dir, x), erequestsg_lst)
    ?
    lololol233
        9
    lololol233  
       2015-03-22 05:47:40 +08:00
    @x14oL
    打包成egg文件这步不是必须的 你可以直接把源码目录复制到你项目的某个子目录中
    假设你现在已经生成了requests.egg文件 那么就将其复制到your_project/egg/下
    在你项目的初始化脚本或者__init__.py(这完全取决于你项目是如何被运行的, __init__.py用途请自行google)中添加:
    # 找到egg的绝对路径
    curr_dir = os.path.dirname(os.path.realpath(__file__))
    eggs_dir = os.path.join(curr_dir, 'egg')
    # 指定egg文件名/源码目录名
    egg_lst = ['requests.egg']
    # 添加模块到os.path
    egg_lst = map(lambda x: os.path.join(requests_dir, x), egg_lst)
    # import模块
    import requests
    # 下面就可以使用requests了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2637 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:01 · PVG 19:01 · LAX 03:01 · JFK 06:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.