首页 > 解决方案 > python - cx_Freeze ImportError

问题描述

我正在使用 cx_Freeze 将我的游戏转换为可执行文件,并且一直收到此错误:

Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    executables=[Executable('racecar.py')])
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python3732\lib\site-packages\cx_Freeze\dist.py", line 349, in setup
    distutils.core.setup(**attrs)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 985, in run_command
    cmd_obj.run()
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\command\build.py", line 135, in run
    self.run_command(cmd_name)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\distutils\dist.py", line 985, in run_command
    cmd_obj.run()
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\dist.py", line 219, in run
    freezer.Freeze()
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\freezer.py", line 624, in Freeze
    self.finder = self._GetModuleFinder()
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\freezer.py", line 347, in _GetModuleFinder
    finder.IncludePackage(name)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\finder.py", line 659, in IncludePackage
    module = self._ImportModule(name, deferredImports)
  File "C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\lib\site-packages\cx_Freeze\finder.py", line 351, in _ImportModule
    raise ImportError("No module named %r" % name)
ImportError: No module named 'Pillow'

这是我的 setup.py:

from cx_Freeze import setup, Executable
import os

os.environ['TCL_LIBRARY'] = r'C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Users\Shaunak.Warty22\AppData\Local\Programs\Python\Python37-32\tcl\tk8.6'

options = {'packages':['pygame', 'Pillow'],
       'include_files':['Lobster-Regular.ttf', 'NosiferCaps-Regular.ttf', 'racecar.png']}

setup(
    name = 'Racecar Dodge',
    version = 0.1,
    description = 'Use your racecar to dodge obstacles and try to get as many blocks dodged as possible!',
    options={'build_exe': options},
    executables=[Executable('racecar.py')])

我在我的电脑上安装了 Pillow,并且在 setup.py 中有它,所以我对为什么会收到错误感到困惑。

标签: pythonpython-3.xpython-imaging-libraryimporterrorcx-freeze

解决方案


您在 'options' 中将 'Pillow' 作为一个包列出,导致 cx_freeze 尝试导入 'Pillow' - 但是,这应该是 'PIL',因为这是模块的名称。“枕头”只是包裹的人名。

options = {'packages':['pygame', 'PIL'],


推荐阅读