PyInstaller的ImportError(使用module pattern.de)

时间:2016-02-26 14:38:00

标签: design-patterns importerror pyinstaller

我正在使用名为pattern.de(http://www.clips.ua.ac.be/pages/pattern-de)的模块来实现文本挖掘工具。为了让我的同事可以使用它,我想将其转换为独立的应用程序。那是因为我正在使用PyInstaller。当我运行最终的可执行文件时,我得到以下ImportError

Traceback (most recent call last):
  File "<string>", line 4, in <module>
ImportError: No module named pattern.de
test returned -1
LOADER: OK.
LOADER: Cleaning up Python interpreter.

为了更容易找到解决方案,我将脚本缩减到关键部分:

from pattern.de import parse, split

这是我开始创建PyInstaller的原因:

pyinstaller --onedir --name=test --hiddenimport pattern.de --debug "C:\Users\BBlag\PycharmProjects\LDA\test.py"

如您所见,我将pattern.de显式添加为hiddenimport。但是当PyInstaller运行时,它向我显示它无法找到模块:

108 INFO: Analyzing hidden import 'pattern.de'
1215 ERROR: Hidden import 'pattern.de' not found

我对编程很陌生,所以请原谅这个问题是否微不足道。我一直想知道它是否可以与事实有关,模块本身(当它被下载和安装时)简称为“模式”。 'Pattern.de'用于导入包的德语版本。这就是为什么我也试图隐藏进口'模式'。当我这样做时,我没有从PyInstaller收到上述错误(这里找到了正确的模块),但在执行最终应用程序时,我得到以下类似的错误:

Traceback (most recent call last):
  File "<string>", line 4, in <module>
ImportError: No module named de
test returned -1
LOADER: OK.
LOADER: Cleaning up Python interpreter.

该应用程序显然缺少此处的“de part”。我做错了什么?

2 个答案:

答案 0 :(得分:0)

(后代)

我在'pattern.en'中遇到了类似的问题。当我告诉pyinstaller导入'pattern.text'时,我的问题得到解决。 'en','de'等实际上包含在该目录中。

答案 1 :(得分:-1)

pattern.en和en-model.slp也有类似的问题。我想出了一个临时修复程序,该修复程序对我很有效。不过,可能有更好的解决方法:

  1. 导入“ pattern.text.en”而不是导入“ pattern.en”,因为这实际上是它的样子
  2. 可执行文件无法找到“ en-model.slp”文件。在“ /pattern/text/en/init.py”中,en-model.slp定义为model = os.path.join(MODULE,“ en-model.slp”)
  3. init .py的顶部(定义了MODULE变量),我临时将变量更改为空字符串,以便可执行文件在当前目录中找到.slp文件(例如MODULE = “”)。
  4. 创建可执行文件后,我将“ en-model.slp”文件复制到了创建可执行文件的同一个dist目录中。这样我的可执行文件开始工作。
  5. 还原 init .py
  6. 中的所有更改