我在Python 2.7.9中制作了一些脚本文件,另外还使用了第三方库 pyautoit 0.4 。
我想将我的脚本作为单个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(最近一次调用最后一次):文件 " C:/Users/win7x64kor/PycharmProjects/treesearch_27/myprogram.py" ;, line 26,在 autoitdll.run(" wordpad.exe&#34)
文件" C:\ Python27 \ lib \ ctypes__init __。py",第378行, getattr func = self。 getitem (姓名)
文件" C:\ Python27 \ lib \ ctypes__init __。py",第383行, getitem func = self._FuncPtr((name_or_ordinal,self))
AttributeError:function' run'找不到
是否有任何加载库的方法,包括.dll文件?
或者更简单的方法来包含' pyautoit'库函数通过添加一些选项,如py2exe" options>包括:" autoit" "一个EXE文件?
答案 0 :(得分:0)
如果您不需要将命令行参数传递给您的exe,您可以尝试http://www.py2exe.org/index.cgi/SingleFileExecutable
中建议的步骤基本思想是使用NSIS(Nullsoft安装系统)将您的exe与所需的dll捆绑在一起。运行exe时,它会将所有内容解压缩到临时文件夹中并执行。关闭时,会自动删除临时文件。