Python:带有py2exe的安装程序和带有OpenOPC模块的项目

时间:2014-09-30 22:26:16

标签: python installation py2exe win32com

我搜索了如何为我的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模块放在这里。

1 个答案:

答案 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服务器),可能会更加困难。