这里提出了一个类似的问题(没有找到解决方案):pyinstaller and loading pickle file
我有主要的 python 脚本A.py,它调用B_pickle.py了 pickle 模型的加载位置。
A.py好像:
import sys
import sklearn
import pickle
import B_pickle as bp
# command line args
classifier_filename = sys.argv[1]
input_file = sys.argv[2]
found_classification = ""
found_classification = bp.classification(classifier_filename, input_file)
B_pickle.py看起来像(位于与 A.py 相同的路径):
def load_pickle(classifier_filename):
import pickle
return pickle.load(open(classifier_filename, "rb"))
def classification(classifier_filename, data):
classifier = load_pickle(classifier_filename)
prediction = 'my_classification_algorithm_here'
return prediction
供参考:我使用以下内容生成可执行文件:
cd path_to_main_python_file
pyinstaller --onefile A.py
当我从命令提示符调用可执行文件时,我会:
A.exe file_name.pickle input_file.csv
当我刚刚A.py从 python 3.x 运行时,一切正常,并且我收到了一个合理的分类作为found_classification. 然而,当我生成一个可执行文件,然后使用两个参数调用 exe 时,它似乎没有加载 pickle 模型,也没有引发任何错误。帮助表示赞赏!