首页 > 解决方案 > 使用 cx_Freeze 制作应用程序时没有名为“队列”的模块

问题描述

我正在尝试从我的 python 脚本创建一个 exe 文件,当我运行由 cx_Freeze 创建的 exe 时,出现以下错误,

Traceback (most recent call last):
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\ScheduleThread.py", line 28, in run
    schedule.run_pending()
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\schedule\__init__.py", line 563, in run_pending
    default_scheduler.run_pending()
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\schedule\__init__.py", line 94, in run_pending
    self._run_job(job)
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\schedule\__init__.py", line 147, in _run_job
    ret = job.run()
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\schedule\__init__.py", line 466, in run
    ret = self.job_func()
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\MainUpdater.py", line 14, in MainUpdater
    Scrapper(dir_path, subreddit_name)
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\Scrapper.py", line 2, in Scrapper
    import praw
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\praw\__init__.py", line 14, in <module>
    from .reddit import Reddit  # NOQA
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\praw\reddit.py", line 11, in <module>
    from prawcore import (Authorizer, DeviceIDAuthorizer, ReadOnlyAuthorizer,
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\prawcore\__init__.py", line 4, in <module>
    from .auth import (Authorizer, DeviceIDAuthorizer, ReadOnlyAuthorizer,  # NOQA
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\prawcore\auth.py", line 5, in <module>
    from requests import Request
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\requests\__init__.py", line 43, in <module>
    import urllib3
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\urllib3\__init__.py", line 8, in <module>
    from .connectionpool import (
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Wallpaper-Updater_venv\lib\site-packages\urllib3\connectionpool.py", line 28, in <module>
    from .packages.six.moves import queue
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\build\exe.win-amd64-3.7\lib\urllib3\packages\six.py", line 92, in __get__
    result = self._resolve()
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\build\exe.win-amd64-3.7\lib\urllib3\packages\six.py", line 115, in _resolve
    return _import_module(self.mod)
  File "C:\MS_Notes\my_scripts\Wallpaper-Updater\Scripts\build\exe.win-amd64-3.7\lib\urllib3\packages\six.py", line 82, in _import_module
    __import__(name)
ModuleNotFoundError: No module named 'queue'

这是我的 setup.py 文件,

from cx_Freeze import setup, Executable

base = None
includefiles = ["wallpaper_updater_2XT_icon.ico"]

executables = Executable(
    script="WallpaperUpdater.py",
    base=base,
    icon="wallpaper_updater_2XT_icon.ico"
)

packages = ["idna"]
options = {
    'build_exe':
    {
        'packages': packages,
        'include_files': includefiles
    },
}

setup(
    name="Wallpaper Updater",
    options=options,
    version="0.1",
    description='Downloads top images form subreddits and change wallpaper',
    executables=[executables]
)

而且我也尝试过使用 pyinstaller,但是 praw 存在问题,我收到以下错误,

Traceback (most recent call last):
  File "Scripts\ScheduleThread.py", line 28, in run
  File "site-packages\schedule\__init__.py", line 563, in run_pending
  File "site-packages\schedule\__init__.py", line 94, in run_pending
  File "site-packages\schedule\__init__.py", line 147, in _run_job
  File "site-packages\schedule\__init__.py", line 466, in run
  File "Scripts\MainUpdater.py", line 14, in MainUpdater
  File "Scripts\Scrapper.py", line 8, in Scrapper
  File "Scripts\RefreshTokenGen.py", line 75, in RefreshToken
  File "Scripts\RefreshTokenGen.py", line 49, in main
  File "site-packages\praw\reddit.py", line 129, in __init__
  File "site-packages\praw\config.py", line 72, in __init__
  File "site-packages\praw\config.py", line 98, in _initialize_attributes
  File "site-packages\praw\config.py", line 31, in _config_boolean
AttributeError: '_NotSet' object has no attribute 'lower'

显然这是因为 pyinstaller 无法将 .py 完美地制作成 .exe 可以通过更改 praw 脚本来修复,我不知道该怎么做,因为回答这里的人没有提到如何做,但我已经就此联系过他。

如果有人可以为我提供任何帮助,我将不胜感激。先感谢您。

标签: python-3.xpyinstallercx-freezepraw

解决方案


推荐阅读