2014-09-30 1 views
2

Я искал, как я могу создать установщик для моего проекта Python. Я нашел хорошую альтернативу, то есть модуль py2exe. Это используется на setup.py.Python: инсталлятор с py2exe и проект с модулем OpenOPC

Но мой проект использует COM-сервер с модулем win32com в модуль OpenOPC. По этой причине, после того, как я произвожу автономный directorie с файлом EXE, этот исполняемый не работает, возвращая это исключение:

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 и не представляет, где я должен включать модуль 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()]) 

К сожалению, это не сработало. Я попытался поместить некоторые другие файлы или каталоги на модули в конструктор класса целей. Кажется, что я должен разместить здесь модуль OpenOPC, если он не в другом месте.

+0

Можете ли вы подробнее остановиться на «не работает»? Вы получаете другую ошибку при использовании этого примера? Я уверен, что я использовал COM в сценариях, которые я развернул, - я должен посмотреть, могу ли я найти пример, который я могу опубликовать. –

+0

Последняя ошибка с использованием этого примера - просто не найти модуль. Вот и все. И я попробовал поместить некоторые другие файлы и директории из каталога OpenOPC на диск C. –

+0

Я пробовал как этот парень и работал: https://stackoverflow.com/questions/9002097/ignoring-library-zip-in-py2exe –

ответ

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-сервер), возможно, это было бы еще сложнее.