如何为PyInstaller创建钩子模块?
我最近用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