从Python脚本创建独立编译的可执行文件(使用sklearn)

时间:2017-09-27 09:17:25

标签: python linux scikit-learn cython pyinstaller

假设这是代码。它接受一个CSV文件,做它的东西,并提供一些输出。这样叫:

python test.py input.csv

import numpy as np
from sklearn.svm import SVC
import sys

filename = sys.argv[-1]

val = np.genfromtxt(filename,delimiter=',')
target = val[:, 4]
features = val[:, [0,1,2,3]]

clf = SVC()
clf.fit(features, target)

print clf.predict([[6.3,2.9,5.6,1.8]])

现在我想创建一个独立的可执行文件,它可以在没有安装任何先决条件的任何机器上运行(Python 2.7,numpy,sklearn等)。

我在Ubuntu 16.04上使用PyInstaller创建了一个可执行文件:

pyinstaller --onefile --hidden-import sklearn.neighbors.typedefs test.py

我可以在没有安装任何先决条件的任何Ubuntu机器上使用生成的可执行文件(大小约55 MB):

./test input.csv

它提供相同的输出。 因此部分问题得以解决。 但是文档:https://pythonhosted.org/PyInstaller/operating-mode.html#hiding-the-source-code

声明源代码无法受到保护,并建议将Cython作为补救措施。我遇到了这个StackOverflow问题Cython standalone executable on ubuntu

描述了使用--embed选项来包含Python解释器。但是我如何使用Cython嵌入sklearn,numpy等来创建一个真正的独立应用程序?

执行应该简单:

./test input.csv

并且源代码不应受到损害。 我需要帮助扩展这个Cython standalone executable on ubuntu问题以嵌入外部库(sklearn,numpy等)。

0 个答案:

没有答案