使用cx_freeze进行Python冻结'没有名为'app.report'的模块

时间:2016-06-06 18:57:01

标签: python cx-freeze

我有以下应用程序树

app
├── app.data
│   ├── app
│   │   ├── data
│   │   │   ├── __init__.py
│   │   │   ├── module1.py
│   │   │   ├── LICENSE.txt
│   │   │   ├── README.rst
│   │   ├── __init__.py
│   ├── LICENSE.txt
│   ├── README.rst
│   ├── requirements.txt
│   └── setup.py
├── app.gui
│   ├── app
│   │   ├── gui
│   │   │   ├── __init__.py
│   │   │   ├── module2.py
│   │   │   ├── LICENSE.txt
│   │   │   ├── README.rst
│   │   ├── __init__.py
│   ├── LICENSE.txt
│   ├── README.rst
│   ├── requirements.txt
│   └── setup.py
├── app.processing
│   ├── app
│   │   ├── processing
│   │   │   ├── __init__.py
│   │   │   ├── module3.py
│   │   │   ├── LICENSE.txt
│   │   │   ├── README.rst
│   │   ├── __init__.py
│   ├── LICENSE.txt
│   ├── README.rst
│   ├── requirements.txt
│   └── setup.py

我想用cx_freeze冻结这个应用程序。所以我的setup.py:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import os
from cx_Freeze import setup, Executable

# Path to modules
sys.path.append(os.path.abspath('app.data'))
sys.path.append(os.path.abspath('app.processing'))
sys.path.append(os.path.abspath('app.gui'))
path = sys.path

import app.data  # ok
import app.processing  # ok
import istat.gui  # ok

# Include/exclude modules option
includes = []
excludes = ['urllib']

# Packages
packages = ['app.data', 'app.processing', 'istat.gui']

# Non-py files
includefiles = []

options = {
    'build_exe': {
        'includes': includes,
        'excludes': excludes,
        'path': path,
        'packages': packages
    }
}

executables = [
    Executable('app.gui/module2.py', base=None)
]

setup(name='App',
      version='1.0.0',
      description='Description of the app',
      options=options,
      executables=executables)

因此在setup.py中导入进展顺利,但cxfreeze给我一个错误ImportError: No module named 'app.procesing'。我不明白为什么会发生这种情况,因为模块的路径已添加到sys.path并在setup.py中作为测试导入得很好。

我做错了什么?

0 个答案:

没有答案