0

这里提出了一个类似的问题(没有找到解决方案):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 模型,也没有引发任何错误。帮助表示赞赏!

4

0 回答 0