cx_Freeze: сбой импорта модулей - PullRequest
0 голосов
/ 19 мая 2019

Я хотел бы скомпилировать проект Python3 с помощью cx_Freeze, но независимо от того, что я делаю, я никогда не смогу импортировать свои .py файлы.

Вот моя структура каталогов:

projectname/
 setup.py
 app/
    code/
       __init__.py
       config.py
       run.py
       run - editeur.py
       ... 
    image/
       ...
    level/
       ...

Мой setup.py:

import sys, os
from cx_Freeze import setup, Executable

path = sys.path
includes = []
excludes = []
packages = ["app/code"]
includefiles = ["app/image", "app/level"]

optimize = 0
silent = True

options = {"path": path,
       "includes": includes,
       "excludes": excludes,
       "packages": packages,
       "include_files": includefiles,
       "optimize": optimize,
       "silent": silent
       }

base = Win32GUI

cible_1 = Executable(
    script="app/code/run.py",
    )

cible_2 = Executable(
    script="app/code/run - editeur.py",
    )

setup(
    name="project",
    version="1.0",
    description="blabla",
    options={"build_exe": options},
    executables=[cible_1, cible_2]
    )

Компиляция cx_Freeze идет хорошо, и я получаю 2 исполняемых файла. Но когда я пытаюсь запустить его, каждый раз я получаю одну и ту же ошибку:

[...]
File "app/code/run.py", line 7, in <module>
import config
ImportError: No module named 'config'

Я действительно должен пропустить что-то глупое, так как у меня нет проблем с плагинами. Это также может быть проблема пути или что-то еще, чего я не знаю ...

Кто-нибудь знает, как мне немного помочь? Спасибо!

1 Ответ

0 голосов
/ 20 мая 2019

РЕДАКТИРОВАТЬ: мне удалось заморозить упрощенный пример, основанный на вашей структуре каталогов со следующей модификацией сценария setup.py:

path = sys.path + ['app/code']
packages = []

В качестве альтернативы, вы также можете попробовать следующую структуру (соответственно изменив пути импорта):

projectname/
   setup.py
   config.py
   run.py
   run - editeur.py
   ... 
   image/
      ...
   level/
      ...
...