如何为PyInstaller创建钩子模块?

4 投票
1 回答
2253 浏览
提问于 2025-04-16 19:53

我最近用PyQt和其他一些包写了一个脚本,想把它分享给别人,所以我在尝试用PyInstaller把它打包成exe文件。

不过我遇到了一个问题,就是“导入失败,找不到某个东西”。我了解到这可能跟我需要为一些模块创建钩子文件有关。我试着按照PyInstaller手册上有限的指南去做,但似乎没有成功。有没有什么建议?生成的.exe文件在执行'from import obspy.core import *'这一步时失败,所以可以推测在它之前的导入都没问题。

我脚本中的导入内容如下:

import os.path
import sys
import string
import fnmatch

import numpy as np

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from obspy.core import read
from matplotlib.figure import Figure
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QTAgg as     NavigationToolbar
from matplotlib.widgets import MultiCursor
from obspy.signal import rotate
from obspy.signal import filter

1 个回答

0

第一条规则是,Python脚本的名字不能和模块的名字一样,比如如果你有一个叫做mail.py的脚本,就会在导入名为'mail'的模块时出现问题。我猜可能你有一个叫obspy.py的脚本,或者有一个同名的.pyc文件。

关于我自己设置的自定义模块导入方式,这里是我用的有效方法。

首先,创建一个名为Foo的模块,里面有一个叫Bar的组件。在名为Foo/__init__.py的文件中,列出要导入的模块:

import Bar

然后在你的脚本中:

From Foo import Bar

print Bar.helloworld

撰写回答