Python 未实施错误:Can';t对未注册的加载程序类型执行此操作

Python 未实施错误:Can';t对未注册的加载程序类型执行此操作,python,jinja2,Python,Jinja2,我正在制作一个小脚本来生成一个HTML文件。为此,我使用了jinja2 这是我的脚本(可在jinja2文档中找到): 包“monapplication”包含my index.html文件所在的文件夹“templates” 但当我运行脚本时,会出现以下错误: “NotImplementedError;无法对未注册的 装载机类型。” 我做了一些研究,但没有找到解决问题的办法 我的操作系统是Windows 10。我也有同样的问题。问题是“monaaplication”被称为目录,而不是python包

我正在制作一个小脚本来生成一个HTML文件。为此,我使用了
jinja2

这是我的脚本(可在
jinja2
文档中找到):

包“monapplication”包含my index.html文件所在的文件夹“templates”

但当我运行脚本时,会出现以下错误:

“NotImplementedError;无法对未注册的 装载机类型。”

我做了一些研究,但没有找到解决问题的办法


我的操作系统是Windows 10。

我也有同样的问题。问题是“monaaplication”被称为目录,而不是python包


尝试将\uuuu init\uuuuu.py文件添加到目录“monaaplication”。(这就是Python将此目录视为一个包的原因。)

我在jinja2中也遇到了同样的问题。这主要是因为pkg_资源与pyinstaller不兼容,而jinja2正在使用pkg_资源

决议:

我使用cx_Freeze而不是pyinstaller将.py文件转换为.exe,它对我来说运行良好。 您可以将其用于cx\U冻结-


谢谢

使用cx\u Freeze将.py转换为.exe的步骤

安装cx\u Freeze(打开命令提示符并键入pip Install cx\u Freeze)。 安装idna, 在脚本的当前目录(.py文件)上创建一个名为setup.py的新python文件。 在setup.py文件中,复制下面的代码并保存。 按住shift键并在同一目录上单击鼠标右键,可以打开命令提示窗口。 在提示符中,键入python setup.py build 如果您的脚本没有错误,那么在创建应用程序时就不会有问题。 检查新创建的文件夹生成。它有另一个文件夹。在该文件夹中,您可以找到您的应用程序。运行它。让自己高兴。 请在我的博客中查看原始脚本

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

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

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)
来自cx\u冻结导入设置,可执行
基本=无
可执行文件=[可执行文件(“myfirstprog.py”,base=base)]
软件包=[“idna”]
选项={
'build_exe':{
“包”:包,
},    
}
设置(
name=“”,
选项=选项,
版本=”,
描述=“”,
可执行文件=可执行文件
)
编辑:
您应该将.py中导入的每个包都包括在包列表中(例如:包=[“idna”、“os”、“sys”])

我在使用pandas时遇到了相同的错误

问题是使用了空提供程序,所以我只是替换了它。我没有深入研究该库,但它帮助我和pyinstaller开始正常工作

try:
    from pandas.io.formats.style import Styler
except NotImplementedError:
    import pkg_resources as res
    from pyimod03_importers import FrozenImporter

    res.register_loader_type(FrozenImporter, res.DefaultProvider)

从Python 3.3开始,为包指定目录不再需要空的
\uuu init\uuuuuuuuuuupy.py
文件。这个答案仍然正确,但原因不是:今天,这只是setuptools中的一个要求,而不是Python本身。我支持Python 3.6,在包的根目录中添加
\uuu init\uuuuuuuuuuuuuupy
,导致了这个错误远离。因此,这仍然是事实。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
try:
    from pandas.io.formats.style import Styler
except NotImplementedError:
    import pkg_resources as res
    from pyimod03_importers import FrozenImporter

    res.register_loader_type(FrozenImporter, res.DefaultProvider)