我搜索了如何为我的Python项目生成安装程序。 我找到了一个很好的选择,那就是py2exe模块。这用于setup.py。
但我的项目使用带有win32com模块的com服务器进入OpenOPC模块。 出于这个原因,在我用exe文件生成一个独立的directorie之后,这个可执行文件不起作用,返回这个异常:
IOError: [Errno 2] No such file or directory:
'C:\\Users\\(project directory)\\dist\\lib\\shared.zip\\win32com\\gen_py\\__init__.py'
我搜索了更多相关内容并找到了此页面: http://www.py2exe.org/index.cgi/Py2exeAndWin32com
此页面教授一个'模型'对于setup.py,将com服务器包含为模块。 但我不明白这个模型'。 它对所有com服务器都是通用的,并没有介绍我应该在哪里包含OpenOPC模块。 我尝试了一些方法来使用这个模型:
from distutils.core import setup
import py2exe
import sys
class Target:
def __init__(self):
self.version = version
self.company_name = author
self.copyright = license_
self.name = name
self.description = description
self.modules = ['C:\\OpenOPC\\src\\OpenOPC.py']
self.create_exe = True
self.create_dll = False
sys.argv.append('py2exe')
setup(name=name,
version=version,
author=author,
author_email=author_email,
maintainer=maintainer,
maintainer_email=maintainer_email,
url=url,
license=license_,
description=description,
long_description=long_description,
keywords=keywords,
platforms=platforms,
console=console, zipfile=zipfile,
com_server=[Target()])
不幸的是,这不起作用。 我试图将模块上的其他文件或目录放入Target类构造函数中。 如果不是在其他方面,我似乎必须把OpenOPC模块放在这里。
答案 0 :(得分:0)
我做了:
sys.argv.append('py2exe')
setup(name=name,
version=version,
author=author,
author_email=author_email,
maintainer=maintainer,
maintainer_email=maintainer_email,
url=url,
license=license_,
description=description,
long_description=long_description,
keywords=keywords,
platforms=platforms,
console=console, zipfile=zipfile,
options=options)
,其中
options = {'py2exe': {'packages': ['win32com']}}
就是这样。工作。我的应用程序有一个OPC客户端而不是OPC服务器。如果它有一个OPC服务器(COM服务器),可能会更加困难。