创建我的 python 脚本的可执行文件

Creating executable file of my python script

我正在尝试从我的 python 脚本创建一个可执行文件。 系统配置:

python --version : 
                Python 2.7.15 :: Anaconda, Inc.
                conda : 4.3.16
                numpy : 1.14.3
                pandas : 0.23.4
                py2exe : 0.6.9
                pyinstaller : 3.4
                cx-Freeze : 5.1.1

方法 1: 我尝试了 pyinstaller 但不幸的是它需要 PyQt5 并且因为 pyqt5 不支持 python 2.7环境 我无法继续使用此方法 https://pypi.org/project/PyQt5/#files

方法二: py2exe 1) python setup.py install 2) python setup.py py2exe 但是当我在 cmd 中执行 运行 我的 exe 文件时,我得到以下错误

错误:

X:\Data_Analytics\ETL\dist>Expiry.exe
Traceback (most recent call last):
  File "Expiry.py", line 5, in <module>
  File "pandas\__init__.pyc", line 19, in <module>
ImportError: Missing required dependencies ['numpy']

设置代码文件:

from distutils.core import setup
import py2exe
import sys
sys.setrecursionlimit(5000)

setup(console=['Expiry.py'])

方法三:cx_Freeze 命令:python setup.py build 安装文件:

from cx_Freeze import setup, Executable 

setup(name = "Expiry" , 
      version = "1.0" , 
      description = "" , 
      executables = [Executable("Expiry.py")]) 

错误:

X:\Data_Analytics\ETL\build\exe.win-amd64-2.7>Expiry.exe
Traceback (most recent call last):
  File "X:\Anaconda\lib\site-packages\cx_Freeze\initscripts\__startup__.py", line 14, in run
    module.run()
  File "X:\Anaconda\lib\site-packages\cx_Freeze\initscripts\Console.py", line 26, in run
    exec(code, m.__dict__)
  File "Expiry.py", line 5, in <module>
  File "X:\Anaconda\lib\site-packages\pandas-0.23.4-py2.7-win-amd64.egg\pandas\__init__.py", line 19, in <module>
    "Missing required dependencies {0}".format(missing_dependencies))
ImportError: Missing required dependencies ['numpy']

我已经尝试重新安装 pandasnumpy,也尝试重新安装 anaconda 但没有成功。

  1. 您应该能够 运行 在 Python 控制台中无错误地执行以下命令:

    import numpy
    print numpy.__version__
    import pandas
    print pandas.__version__
    

    如果这不起作用,您首先需要按此顺序(重新)安装 numpypandas

  2. 为了冻结依赖于 pandas(因此依赖于 numpy)和 cx_Freeze 的脚本,您需要显式添加 numpybuild_exe 选项的 packages 列表。尝试对安装脚本进行以下修改:

     from cx_Freeze import setup, Executable 
    
     options = {'build_exe': {'packages': ['numpy']}}
    
     setup(name = "Expiry" , 
           version = "1.0" , 
           description = "" ,
           options = options,  
           executables = [Executable("Expiry.py")])
    

    参见 Creating cx_Freeze exe with Numpy for Python

@jpeg 正如所指出的,这是我的解决方案,在您的推荐下有效。

from cx_Freeze import setup, Executable 
options = {'build_exe': {'packages': ['numpy'], 'include_files':['X:\Anaconda\Lib\site-packages\mkl_intel_thread.dll']} }

setup(name = "Expiry" , 
       version = "1.0" , 
       description = "" ,
       options = options,  
       executables = [Executable("Expiry.py")])