cx_Freeze:导入模块失败

时间:2019-05-18 21:56:07

标签: python module compilation cx-freeze

我想用cx_Freeze编译一个Python3项目,但是无论如何我都永远无法导入自己的.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 :(得分:0)

编辑:通过对setup.py脚本进行以下修改,我设法冻结了一个基于您的目录结构的简化示例:

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

或者,您也可以尝试以下结构(相应地修改导入路径):

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