http://my.oschina.net/cuilili/blog/382278
本人完全小白,求大牛打包个exe文件或者给个食用方法。
1
manoon 2015-03-15 01:02:44 +08:00 via Android
如果程序可用,你想发给其它同学炫耀一下,直接找个py2exe 不就行了。
如果程序可用,你直接装个python,外加bs 库和其它需要的库。直接跑不就行了? 如果程序不可用,这个,那你好好学习吧。一直debug吧。 |
4
kn007 2015-03-15 05:43:06 +08:00 2
。。。本不想浪费我这宝贵的金币的。。。但特么的还是要说两句。。。楼主。。。人家都把源码给你,你还想咋滴。
|
5
hahasong 2015-03-15 09:08:33 +08:00 via Android
@manoon 我也有个问题想问,如果自己写的代码里引用了第三方需要安装的二进制模块,比如cipher加密库,request库等。最怎样才能打包成让用户不用安装任何包直接运行的绿色文件夹,或者像goagent那样自带运行环境,只用双击的exe
|
6
oott123 2015-03-15 09:59:47 +08:00 via Android
@hahasong 你看看 GoAgent 怎么做的不就好了…
我记得它给出了完善的方案。还独立出来并且开源了。 |
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的话平台不同就麻烦了 估计可以交叉编译 |
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) ? |
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了 |