当前位置: 首页 > 面试题库 >

使用PyInstaller时未命名模块

彭炳
2023-03-14
问题内容

我尝试使用PyInstaller在Windows
7下编译Python项目。该项目运行正常,没有问题,但是当我尝试对其进行编译时,结果将不起作用。尽管在编译过程中没有收到警告warnmain.txt,但build目录中的文件中有很多警告:warnmain.txt

我不是很了解这些警告,例如“没有名为numpy.pi的模块”,因为numpy.pi它不是模块而是数字。我从未尝试导入numpy.pi。我确实导入numpymatplotlib明确。另外,我正在使用PyQt4。我认为错误可能与那些库有关。

但是我能够编译一个成功使用numpy的简单脚本:

import sys
from PyQt4 import QtGui, QtCore
import numpy as np

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.pb = QtGui.QPushButton(str(np.pi), self)

app = QtGui.QApplication(sys.argv)
main = MainWindow()
main.show()
sys.exit(app.exec_())

成功地表示已创建的可执行文件实际上显示了所需的输出。但是,还会warnmain.txt创建一个文件,其中包含与以前完全相同的“警告”。因此,我猜测编译我的实际项目并没有取得任何成功的事实与(或至少不仅如此)与这些警告无关。但是那又是什么错误呢?编译期间的唯一输出是“
INFO”,并且都不是否定语句。

我没有指定其他钩子目录,但是从我可以从编译输出中读取的钩子向下使用默认目录,例如hook- matplotlib已执行。我看不到任何钩子,numpy我的小型示例脚本也看不到任何钩子,但是此脚本有效。我在文件中使用了以下导入(不是全部都在同一文件中,而是在不同文件中):

import numpy as np
import matplotlib.pyplot as ppl
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as NavigationToolbar
from PyQt4 import QtGui, QtCore
import json
import sys
import numpy # added this one later
import matplotlib # added this one later

由于PyInstaller没有给出任何错误/警告,因此我无法弄清楚问题是否与库有关,或者是否还有其他需要考虑的地方。


问题答案:

问题是matplotlib的某些运行时依赖性。因此,运行该程序时编译正常,但引发了一些错误。因为终端立即关闭了,所以我没有意识到。重定向后stdout,并stderr到一个文件,我可以看到,我错过了图书馆TkinterFileDialogimport在main的顶部添加两个s解决了此问题。



 类似资料:
  • 问题内容: 我知道这个问题已经被问过多次了。我已经阅读了所有内容,但无法解决问题。以下是我的目录结构。 在main.py中,我将导入以下内容。 当我在Windows中执行代码时,它工作得很好。但是在Linux中,出现以下错误。 我还阅读了有关模块和包的官方python文档。 问题答案: 您的包裹结构还可以。您的导入声明很好。唯一缺少的是该软件包在中是可见的,该位置是可以解析import语句的位置列

  • 问题内容: 我有一个具有以下目录结构的python应用程序: 在包 main中 ,我有一个名为 MyServer.py 的python模块,该模块具有如下的import语句: 为了使该语句起作用,我将以下行放在 MyServer.py 的开头: 在终端中运行MyServer.py时,出现以下错误: ImportError:没有名为gen_py.lib的模块 我在这里想念的是什么? 问题答案: 您对

  • 我发现了许多对次要Tkinter依赖项的引用,比如导入Tkinter itslef的matplotlib,但我没有发现类似这样的直接依赖项的任何细节。 你有什么办法让这个工作吗?

  • 为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?

  • 问题内容: Python安装在本地目录中。 我的目录树如下所示: 我的代码在这里: 要运行该示例,我编写,并且在代码中有: 我得到了错误: 我已经检查过了,那里有目录。另外,我在文件夹中有该文件,以向指示这是一个软件包。我在示例目录中也有一个。 我不知道为什么Python在时找不到文件。有任何想法吗?可以是权限问题吗?我需要一些执行许可吗? 问题答案: 根据你对orip帖子的评论,我想这是发生了什

  • null 如上所示,它导出了一些命名函数,而且重要的是 使用了 。 开玩笑地说,当我为 编写单元测试时,我希望模拟 函数,因为我不希望 中的错误影响我为 编写的单元测试。我的问题是我不确定最好的方法是: 如有任何帮助/洞察力,我们将不胜感激。