2014-02-04 1 views
0

Я пытаюсь создать небольшой .exe, используя cx_freeze. Раньше у меня были проблемы с процессом сборки, поскольку он не нашел бы определенных самоподготовленных модулей. Теперь я решил эту проблему, и я больше не вижу эти самодельные модули на выходе Missing modules после запуска python setup.py bdist_msi.Невозможно выполнить созданное приложение cx_freeze

Вместо этого, теперь после попытки запуска «main.exe`, который производится я вижу:

ImportError No module named 'test' 

Моя структура проекта:

PROJECT 
| 
SRC 
    | 
    setup.py 
    main.py 
    test.py 
    service.py 

setup.py выглядит следующим образом:

import sys 
from cx_Freeze import setup, Executable 

base = None 

if sys.platform == "Win32": 
    base = "Win32GUI" 

includes = ["test", "service"] #discovered that self made modules, even in the same directory, had to be added here to not appear in the 'Missing modules' 
excludes = [] 
packages = [] 
path = [] 

setup(
     name = "a thing", 
     version = "1.0", 
     description = "a things description", 
     author = "author", 
     author_email = "authors email", 
     url = "authors url", 
     options = {"build_exe": {"includes": includes, 
           "excludes": excludes, 
           "packages": packages, 
           "path": path} 
       }, 
     executables = [Executable("main.py", base = base)] 
) 
+0

Попробуйте импортируйте их в модуль setup.py. Я видел эту работу раньше. – HashSplat

+0

@ JustinEngel спасибо, попробовал это. По-прежнему такая же ошибка после сборки и выполнения. Я не понимаю, все учебники и руководства (в том числе видео-гиды), которые я видел, показывают, что я должен «работать». Полностью смущен. –

+0

Если ваш основной модуль импортирует тест или услугу, вам не нужно включать их вообще. Возможно, вам придется импортировать главную для этого. – HashSplat

ответ

0

Как правило, вам не нужно выполнять специальную обработку для ваших собственных модулей.

я попытался следующие, и для меня он работал отлично: main.py:

from test import * 

if __name__ == "__main__": 
    mA=A() 
    mA.b(); 

test.py:

class A: 
    def b(self): 
     print("test") 

setup.py:

like yours (without service.py) 
+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). – Pinal

+0

да, вы правы. Прости. но до сих пор я не могу добавлять комментарии к его сообщению. –

+0

@der_die_das_jojo Я попытался сменить 'include' на' packages' и ту же ошибку, 'ImportError: no module named 'test''. Спасибо за эту идею. –