创建可执行Python

创建可执行Python,python,scikit-learn,exe,pyinstaller,seaborn,Python,Scikit Learn,Exe,Pyinstaller,Seaborn,我刚刚完成了python的第一项工作,我想为发行版创建一个可执行文件。然而,我很难做到这一点。我已经尝试过py2exe、pyinstaller和cx_freeze,但没有成功。寻找很多意见,我相信pyinstaller是解决我问题的最佳方案,但我可以让它工作。我在程序中执行的导入操作如下: import os import pygtk import gtk import MySQLdb import getpass as gt import pandas as pd import numpy a

我刚刚完成了python的第一项工作,我想为发行版创建一个可执行文件。然而,我很难做到这一点。我已经尝试过py2exe、pyinstaller和cx_freeze,但没有成功。寻找很多意见,我相信pyinstaller是解决我问题的最佳方案,但我可以让它工作。我在程序中执行的导入操作如下:

import os
import pygtk
import gtk
import MySQLdb
import getpass as gt
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pandas.io import sql
from scipy import stats, integrate
from scipy.optimize import curve_fit
import seaborn as sns
from sklearn.neighbors import KNeighborsClassifier
from sklearn.cross_validation import train_test_split
from sklearn import metrics
阅读pyinstaller的文档时,我注意到它只适用于libs scikitlearn(sklearn)和seaborn。当我使用'pyinstaller--onefile Principal.py'时,我会得到构建和dist粘贴,但当我尝试运行.exe文件时,会得到以下消息:

C:\Users\Lucas\AppData\Local\Temp\_MEI82242\gtk\__init__.py:127: RuntimeWarning:
 PyOS_InputHook is not available for interactive use of PyGTK
Traceback (most recent call last):
  File "<string>", line 13, in <module>
  File "c:\users\lucas\appdata\local\temp\pip-build-6fpfyh\pyinstaller\PyInstall
er\loader\pyimod03_importers.py", line 363, in load_module
  File "c:\users\lucas\anaconda\lib\site-packages\pandas\__init__.py", line 13,
in <module>
    "extensions first.".format(module))
ImportError: C extension: lib not built. If you want to import pandas from the s
ource directory, you may need to run 'python setup.py build_ext --inplace' to bu
ild the C extensions first.
Principal returned -1
C:\Users\Lucas\AppData\Local\Temp\\u-MEI82242\gtk\\uuuu-init\uuuuuu.py:127:运行时警告:
PyOS_InputHook不可用于PyGTK的交互使用
回溯(最近一次呼叫最后一次):
文件“”,第13行,在
文件“c:\users\lucas\appdata\local\temp\pip-build-6fpfyh\pyinstaller\PyInstall
er\loader\pyimod03\u importers.py”,第363行,在加载模块中
文件“c:\users\lucas\anaconda\lib\site packages\pandas\\uuuuu init\uuuuuu.py”,第13行,
在里面
“扩展优先。”。格式(模块))
ImportError:C扩展名:库未生成。如果你想从美国进口熊猫
在源目录下,您可能需要运行“python setup.py build_ext--inplace”以
ild首先是C扩展。
返回的本金-1

有人能帮我做些什么吗?

您的问题是python无法构建基于C的包(numpy)。可能是某些已安装的库:

  • 在python发行版中(anaconda)
  • 使用预编译包的控制盘安装文件(.whl)
您可以尝试用两种方法解决此问题:

  • 安装最新的编译器,以便将vcvarsall.bat用于C扩展
  • 安装最新版本,包括IDE和多种语言的编译器。第二个选项正常工作,但它需要硬盘上超过6 gb的内存
安装完成后,您可以启动错误消息告诉您的内容:

python setup.py build_ext --inplace

也许你可以考虑使用Docker?我不认为“将python打包到exe”是一个非常受支持或推荐的工作流。您的应用程序需要在创建应用程序时重新生成包。导入模块(熊猫)不可再发行。有些包需要编译。安装即用库。如果没有源代码,则无法在.exe中使用。不是错误,缺少包(源)!那你建议我做什么?我正在尝试创建一个可执行文件,以便稍后使用Inno创建一个安装程序(他要求一个.exe文件)。如果我使用pyinstaller为我创建的exe,并在Inno中添加pandas和其他LIB的路径,我的程序应该工作吗?