2010-07-29 10 views
0

Может ли кто-нибудь получить pyAA, работающий с py2exe? pyAA можно загрузить here.pyAA с py2exe

Я пытаюсь сделать это в течение последних 2 дней, и до сих пор я не могу найти решение. Файлы примеров, как приведено ниже:

hello.py

import pyAA 
print "Hello, World" 

setup.py

from distutils.core import setup 
import py2exe 

setup(console=['hello.py'], 
     options = {"py2exe": {"bundle_files": 1}}) 

Теперь, если мы запустим:

python setup.py py2exe 

исполняемый создан. Но работает он дает следующее сообщение об ошибке:

Traceback (most recent call last): 
File "hello.py", line 1, in ? 
    File "zipextimporter.pyc", line 82, in load_module 
    File "pyAA\__init__.pyc", line 1, in ? 
    File "zipextimporter.pyc", line 82, in load_module 
    File "pyAA\AA.pyc", line 8, in ? 
    File "zipextimporter.pyc", line 82, in load_module 
    File "pyAA\pyAAc.pyc", line 5, in ? 
    File "zipextimporter.pyc", line 98, in load_module 
ImportError: MemoryLoadLibrary failed loading pyAA\_pyAAc.pyd 

Я попытался с помощью dependency walker, но я не смог сделать слишком много смысла одного и того же. Я пытался добавить/удалить некоторые библиотеки DLL, но безрезультатно.

p.s -> Обратите внимание, что без bundle_files он отлично работает. Но одно из требований проектов означает, что требуется файл bundle_file.

+0

и что такое pyAA, молите уточнить в своем вопросе? –

ответ

2

Этот король вещи, по-видимому, является общей проблемой с py2exe. Возможно, попробуйте использовать другой установщик, такой как PyInstaller.

0

Когда я устанавливаю pyAA и запуска зависит от _pyAAc.pyd, он говорит мне, что я пропускаю ieshims.dll, хотя это может быть потому, что я нахожусь на Windows 7.

+0

Одна из DLL, которые я упомянул в OP, это IESHIMS.DLL. Я попытался добавить это в ту же папку и т. Д., Но безрезультатно. Есть ли какое-нибудь решение? – Koran

0

_pyAAc.pyd является DLL, Я думаю, что их нужно загружать непосредственно из файловой системы (а не из буферов памяти или архивов).

Если требуется однофайльное решение, вы можете сделать свой собственный набор рабочего разобранного результата py2exe, который распаковывает себя в TEMP и запускается оттуда. Я подозреваю, что создатель самораспаковывающегося архива мог бы сделать этот трюк для вас без необходимости кодирования с вашей стороны.

+0

Я попробую это. На данный момент я смог заставить его работать с pyInstaller. – Koran

0

Будучи во главе с Py2Exe несколько раз, связывание DLL с зависимостями обычно вызывает головные боли. Если моя память правильно меня обслуживает, попробуйте добавить sys.exec_prefix в переменную среды PATH. Это должно позволить программе найти IESHIMS.DLL

os.environ['PATH'] = os.sep.join([sys.exec_prefix, os.environ['PATH']]) 
+0

Я пробовал это, но безрезультатно. Я сомневаюсь, что это связано с IESHIMS.DLL, так как я пробовал почти 2/3 дня на этом. – Koran