我有以下应用程序树
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
中作为测试导入得很好。
我做错了什么?