分享、学习、提高
2009/12/27 21:49
文章作者:Enjoy 转载请注明原文链接。
机子上装了python-2.6.4.msi,wxPython2.8-win32-unicode-2.8.10.1-py26.exe,py2exe-0.6.9.win32-py2.6.exe。直接用UE写了个简单的程序,用py2exe打包,OK。再用Boa Constructor试写了个简单的hx.py程序,用py2exe打包,python.exe setup.py py2exe,但是出错提示:
*** finding dlls needed ***
error: MSVCP90.dll: No such file or directory

搜索了下解决方案,一个是说版本都改成2.5,就可以了。另一种是一个国外站上看来的,说是修改了setup.py,加一个options。

# setup.py
from distutils.core import setup
import py2exe
      
#setup(console=["hx.py"])
setup(
    options = {
      "py2exe": {
        "dll_excludes": ["MSVCP90.dll"],
      }
    },
    windows=[{"script": "hx.py"}]
)

加了之后,果然就可以了。

用py2exe生成的dist下有好多文件,其中主文件hx.exe大小为19K,但全选一下,23个文件,18.3M,而这只是一个最最简单的程序。这里看来了py2exe的一些技巧。
引用
原文:http://jinheking.javaeye.com/blog/165057
options里增加bundle_files项,值为1表示pyd和dll文件会被打包到exe文件中,且不能从文件系统中加载python模块;值为2表示pyd和dll文件会被打包到exe文件中,但是可以从文件系统中加载python模块。另外setup中使用zipfile=None可以不生成library.zip。

我试了下,大致如下代码
# setup.py
from distutils.core import setup
import py2exe
      
#setup(console=["hx.py"])
setup(
  options = {
    "py2exe": {
        "dll_excludes": ["MSVCP90.dll"],
        "compressed": 1,
        "optimize": 2,
        "bundle_files": 1
    }
  },
    version = "0.1.0",  
    description = "hxtest",  
    name = "hxtest",  
    zipfile=None,
    windows=[{"script": "hello.py"}]
)

如果使用"bundle_files": 2和zipfile=None,生成一个4.9M的hx.exe和2M的python26.dll和w9xpopen.exe;
如果使用"bundle_files": 1和zipfile=None,生成了一个6.9M的hx.exe和一个w9xpopen.exe。
w9xpopen.exe这个MS没用,好像是用在win9x下的,那么就只需要复制hx.exe到其它人的机子上就可以使用了:)就是包含的文件太大了点:(
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]