python-3.x - PyInstaller 3.6:模块 importlib 没有属性“机器”
问题描述
我在尝试运行 PyInstaller 3.6 生成的可执行文件时遇到任何问题。
我的代码在空闲时运行良好,但在制成可执行文件时无法运行。
我收到以下错误:
AttributeError:模块“importlib”没有属性“machinery”
这种方法似乎只在使用 PyInstaller 时才抛出错误;
def getVariables(filename):
'''Loads variables from variables.txt'''
try:
import importlib
import types
with open(filename) as f:
loader = importlib.machinery.SourceFileLoader('data',filename)
mod = types.ModuleType(loader.name)
loader.exec_module(mod)
return mod
except:
logger.exception('Exception occured:')
我做过的事情:
- 重新安装 PyInstaller;也尝试了多个版本
- 重新安装 importlib/importlib-metadata
- 尝试了不同版本的 Python(3.6.5、3.7.7)
我使用以下命令制作可执行文件;
pyinstaller --clean update.spec
更新规范:
# -*- mode: python -*-
#import win32wnet,sys
import PyInstaller.config;
PyInstaller.config.CONF['distpath'] = "./apps/App/"
PyInstaller.config.CONF['workpath'] = "Z:\\Workspace\\David\\Applications\\src\\"
block_cipher = None
a = Analysis(['Z:\\Workspace\\David\\Applications\\src\\Update.py'],
pathex=['Z:\\Workspace\\David\\Applications\\bin\\apps\\App'],
binaries=[],
datas=[],
hiddenimports=["win32process"],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='Update',
icon='Z:\\Workspace\\David\\Applications\\src\\Icons\\Icon.ico',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=False,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=False,
name='Update')
版本信息:
- 蟒蛇 - 3.6.5
- PyInstaller - 3.6
- 进口库 - 1.0.4
- 导入库元数据- 1.6.0
解决方案
推荐阅读
- python-3.x - Windows 操作系统中的窗口可以超出屏幕多远
- sql - ORACLE 和 SQL Server 中的 MIN 函数工作方式不同
- php - 按值对数组进行排序,同时保留键顺序
- python - 将非常大的 3D Python 列表转换为 numpy 数组永远不会完成
- c# - 使用 Parquet.NET 编写 Parquet 文件适用于本地文件,但会导致 Blob 存储中的文件为空
- javascript - 为什么我不从我的构造函数返回任何东西?
- java - 我正在调用 init 方法失败;嵌套异常是存储库类方法调用上的 java.lang.IllegalArgumentException
- python - 刮掉 div 标签内的文本,并带有一些其他带有文本的标签 - 只刮掉 div 标签的文本
- rest - 如何测试这样给出的 REST 端点?
- python - Pandas:如果条件匹配,如何仅更新最多 n 行