使用cxfreeze在子目录中包含python文件

时间:2015-11-27 04:02:03

标签: python python-2.7 cx-freeze

我试图将python项目冻结为exe。当我在目录" Notifier"中打开命令提示符时并运行cxfreeze notifier/main.py,项目正确编译。我试图从setup.py中获得相同的结果,这样当我运行python setup.py build_exe时,就像以前一样创建一个带有依赖关系的exe。

这是目录结构:

Notifier/
|notifier/
|- __init__.py
|- main.py
|- sender.py
|- request.py
|setup.py

当我运行python setup.py build_exe时,我注意到Missing Modules:下有sender imported from main__main__。当我从Notifier/build/exe.win32-2.7运行main.exe时,会发生以下错误。

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\cx_Freeze\initscripts\Console.py", line 27, in <module>
    exec(code, m.__dict__)
  File "notifier/main.py", line 1, in <module>
ImportError: No module named sender

这是我的setup.py:

from cx_Freeze import setup, Executable
import requests.certs

options = {
    'build_exe': {
        'include_files': [(requests.certs.where(), 'cacert.pem')]
    }
}

setup(
    name='Notifier',
    version='0.1',
    license='MIT',
    author='David Corbin',
    #install_requires=['requests', 'websocket', 'cx_Freeze'],
    options=options,
    executables=[Executable("groupmenotifier/main.py")]
)

2 个答案:

答案 0 :(得分:0)

您需要__init__.py文件夹中名为notifier的文件。

答案 1 :(得分:0)

我必须将groupmenotifier/目录添加到搜索路径中,以便cxfreeze可以找到并使用它。

sys.path.append(os.getcwd()+"\\groupmenotifier")