在PyInstaller分析中确定导入触发dll的内容

时间:2014-07-09 19:06:15

标签: pyinstaller

我试图找出PyInstaller为PyQt保留包含Windows dll文件的原因,即使我的应用程序没有使用PyQt。所以,我想知道如何确定为什么 PyInstaller认为PyQt是必要的,或者更普遍的是我的应用程序中的.py文件导致完成构建中的dll文件。

我目前在Windows机器上使用PyInstaller 2.1并构建一个仅具有以下依赖关系的命令行应用程序:

  • numpy的== 1.8.0
  • numexpr == 2.3.1
  • 用Cython == 0.20.1
  • SciPy的== 0.13.3
  • scikit图像== 0.9.3
  • 表== 3.1.1
  • 斯芬克斯== 1.2.1
  • pylint的== 1.1.0
  • pytest == 2.5.2
  • pytest-COV == 1.6
  • rst2pdf == 0.93.dev
  • 线分析器== 1.0b3
  • IPython的== 2.1.0

我认为除了IPython之外,其中任何一个都严格要求PyQt。然而, 我不确定IPython是否真的在运行时导入PyQt。也有 要在主要的IPython / init .py。

中追踪许多导入

我手动编辑了PyInstaller spec文件,将PyQt4添加到Analysis中 排除。这似乎工作得很好,但我不想手动编辑它 每次我进行构建时都会生成spec文件。我更喜欢弄清楚PyQt4的原因 包括在内?

此外,值得注意的是,包含PyQt4并不一定会伤害任何东西, 但它确实使我的最终分发目录比我大一点 认为它需要。

1 个答案:

答案 0 :(得分:0)

通过使用--log-level DEBUG参数运行pyinstaller并查看build\<exe_name>\xref-<exe_name_>.html文件,您可以看到所有导入的详细视图,触发了包含内容的内容等。

如果您正在运行Pyinstaller 3.3或更高版本,则无论日志级别如何,都将始终写入此文件。 Pyinstaller 3.3 release notes