2015-02-23 43 views
1

我在Python 2.7.9中制作了一些脚本文件,并另外使用了第三方库,pyautoit 0.4在py2exe单个EXE文件中使用第三方库

我想提出我的脚本作为一个单一的EXE(要在单个文件中运行,因此它们不需要安装文件),并通过使用py2exe,尝试这样:

# -*- coding: utf-8 -*- 
from setuptools import setup 
import py2exe, sys, os 
setup(name = "My Test Application", 
     description = "My Test Application for Windows", 
     version = "1.01", 
     console = [{"script": "myprogram.py"}], 
     #data_files - make directory at ./dist, not in exe file 
     #data_files=[("./autoit/lib", ["AutoItX3.dll"])], 
     options = { 
      "py2exe": { 
       "includes": ["win32api",, 
          "autoit", 
          "os" , 
          "time"], 
       "bundle_files": 1, 
      } 
    }, 
    zipfile = None, 
) 

它已成功打包到单个EXE文件中,但EXE中没有AutoItX3.dll文件。

我发现,py2exe不能包括在它的EXE文件.dll文件,所以在我的主脚本我试图手动导入AutoItX3.dll:

# -*- coding: utf-8 -*- 
import os, sys 
from ctypes import cdll 
autoitdll = cdll.LoadLibrary('./modules/AutoItX3.dll') 
autoitdll.run("wordpad.exe") 

,它不能被加载。 (错误消息:

Traceback (most recent call last): File "C:/Users/win7x64kor/PycharmProjects/treesearch_27/myprogram.py", line 26, in autoitdll.run("wordpad.exe")

File "C:\Python27\lib\ctypes__init__.py", line 378, in getattr func = self.getitem(name)

File "C:\Python27\lib\ctypes__init__.py", line 383, in getitem func = self._FuncPtr((name_or_ordinal, self))

AttributeError: function 'run' not found

是否有装载库,包括.dll文件的任何方法

或者更简单的方法只包括“pyautoit”库功能通过在py2exe增加一些选项,如“选项>包括? :?“AutoIt的”“一个EXE文件

回答

0

如果您不需要命令行参数传递给您的exe文件,你可以尝试的步骤建议在http://www.py2exe.org/index.cgi/SingleFileExecutable

的基本思想是用捆绑你的EXE所需的DLL等等唱NSIS(Nullsoft安装系统)。当你的exe运行时,它会将所有内容解压到临时文件夹并执行。关闭时,临时文件将自动删除。

+0

感谢您的回答。我实际上使用Inno Setup作为文件包装器,所以如果我使用这种方法将会有2次安装。所以我应该改变我的方法来解决这个问题。 – 2015-04-27 06:49:39

相关问题