Форум сайта python.su
0
Доброго времени суток
при попытке создать exe файл из вот такого скрипта
# coding: utf-8
import os
oo= os.path.abspath(os.curdir)
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
wb2 = excel.Workbooks.Open(oo+u'\\Еженедельный отчет 2011 год (6 неделя)test.xls')
wb2.Close(SaveChanges=1)
del excel
from distutils.core import setup
import py2exe, sys, os
sys.argv.append('py2exe')
setup(
options = {'py2exe': {'bundle_files': 1}},
windows = [{'script': "module2.py"}],
zipfile = None,
)
Traceback (most recent call last):
File "module2.py", line 16, in <module>
File "zipextimporter.pyc", line 82, in load_module
File "win32com\__init__.pyc", line 5, in <module>
File "zipextimporter.pyc", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading win32api.pyd
Офлайн
3
bundle_files не всегда, к сожалению, нормально работает с dll'ками.
P.S. Кстати, в большинстве случаях для работы с excel, удобнее использовать пакеты xlrd (для чтения) и xlwt (для создания). Они не требуют установленного excel и вообще, кроссплатформенны.
Офлайн
1
Если вместо
import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
from win32com.client.dynamic import Dispatch
excel = Dispatch('Excel.Application')
import sys
from cx_Freeze import setup, Executable
sys.argv.append( 'build' )
buildOptions = dict(
build_exe = 'dist',
compressed = True,
optimize = 2,
)
setup(
name = "OutApp",
version = '2.0',
options = dict( build_exe = buildOptions ),
executables = [Executable( 'script.py')]
)
print( "Done" )
Отредактировано (Март 2, 2011 05:23:35)
Офлайн
36
Эта проблема вылезла в python 2.7 при попытке собрать что-нибудь содержащее pywin32 :(.
Добавьте в setup параметр dll_excludes = и будет Вам счастье :)
Или используйте вместо pywin32 ctypes (comtypes вместо win32com)
ЗЫ. правда у меня так и не получилось обрабатывать COM-события (comtypes)
ЗЫЫ. если Вам требуется только чтение/запись xls-файлов, то прислушайтесь к совету igor.kaist, это действительно гораздо удобнее
Отредактировано (Март 2, 2011 07:50:24)
Офлайн
0
igor.kaistПользовался - но мне нужно записывать данные в уже имеющийся файл, который будет проблематично создавать через xlwt (присутствуют элементы управления, чтото не нашёл как с ними там управлятся)
bundle_files не всегда, к сожалению, нормально работает с dll'ками.
P.S. Кстати, в большинстве случаях для работы с excel, удобнее использовать пакеты xlrd (для чтения) и xlwt (для создания). Они не требуют установленного excel и вообще, кроссплатформенны.
lavrtonэтот код работает, но возникло неожиданное препятствие - при изменении директории
oo= os.path.abspath(os.curdir)
Офлайн
14
os.getcwd()
Офлайн
0
Андрей СветловСоздам ка я новый пост
os.getcwd()
Отредактировано (Март 2, 2011 15:16:19)
Офлайн