第一种方法:我们只会生成一个exe文件,因为所有的库文件他都会包含在这个exe文件中

1、安装:pyinstaller

pip install pyinstaller

2、使用如下命令编译

pyinstaller -F -w GraphCut.py

3、会在项目下生成文件:NewCutUI.spec。之后我们需要在文件里添加导入的包。

原始生成文件:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

a = Analysis(['NewCutUI.py'],
pathex=['E:\\项目\\GraphCut\\graph_cut'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='NewCutUI',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False ) 

修改后的文件:

# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_submodules
block_cipher = None
hiddenimports_numpy = collect_submodules('numpy')
hidden_imports_PyQt4 = collect_submodules('PyQt4')
hiddenimports_graph_cut = collect_submodules('graph_cut')
hidden_imports_maxflow = collect_submodules('maxflow')
hidden_imports_argparse = collect_submodules('argparse')
hidden_imports_GraphMaker = collect_submodules('GraphMaker')
hidden_imports_cv2 = collect_submodules('cv2') block_cipher = None all_hidden_imports = hiddenimports_numpy + hidden_imports_PyQt4+hiddenimports_graph_cut + hidden_imports_maxflow + hidden_imports_argparse + hidden_imports_GraphMaker + hidden_imports_cv2 a = Analysis(['NewCutUI.py'],
pathex=['E:\\项目\\GraphCut\\graph_cut'],
binaries=[],
datas=[],
hiddenimports=all_hidden_imports,
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='NewCutUI',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False )

  

4、使用:pyinstaller.exe NewCutUI.spec 进行打包,其中你需要找到pyinstaller.exe文件位置,我的位置:D:\anaconda\Anaconda\envs\pytorch\Scripts\pyinstaller.exe

pyinstaller.exe E:\项目\GraphCut\graph_cut\NewCutUI.spec 

最后生成的exe文件目录:D:\anaconda\Anaconda\envs\pytorch\Scripts\dist\NewCutUI.exe

我在外面导包的时候经常遇到错误,所以直接在文件里面填了导包的内容。最后exe文件可能会很大,大概都是使用import这个方法导包,虽然我使用from * import *没小多少。

 第二种方法:他会把一些库的依赖生成dll动态链接库文件,所以dist下会有很多个文件。

如果上述方法出现 "failed to execute script”这个错误,我们可以使用下面这个方法,同样可以得到exe文件:

只需要执行这行代码就ok了:pyinstaller.exe  computer_S.py

你可以在当前目录下找到:../dist/computer_S/computer_S.exe文件

将python文件编译成exe文件的更多相关文章

  1. python程序编译成exe文件

    最近越来越喜欢使用python写工具.使用的时候,发现程序内部成员python安装目录常常不同,如果用bat双击执行,常常需要修改从svn上down下来的bat文件中python.exe的路径.而给策 ...

  2. 把python文件编译成exe文件

    我用的是py2exe. 下载地址http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/ 你可以根绝自己的Python版本选择适当的下载 我 ...

  3. Mac上把python源文件编译成so文件

    把python源文件编译成so文件 前言 实际上属于一种代码混淆/加密的技术,大家知道python的源文件放在那里,大家是都可以看的,不像C语言编译出来可以拿编译后的东西去运行,所以就出现了这种需求. ...

  4. C#.NET常见问题(FAQ)-如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  5. C#.NET如何将cs文件编译成dll文件 exe文件 如何调用dll文件

    比如我要把TestDLL.cs文件编译成dll文件,则在命令提示符下,输入下面的命令,生成的文件为TestDLL.dll csc /target:library TestDLL.cs 注意前提是你安装 ...

  6. 把Python项目打包成exe文件

    我们很多时候,写好的程序需要打包成.exe文件才可以发给客户,那么今天我就来谈一谈,如何将一个写好的Python程序打包成exe文件! 首先,我们我们使用到的工具是python 3.7 和 Pyins ...

  7. 将 Python3 文件打包成 exe 文件

    我们用 Python 写好的代码,如何给别人在没有配置 Python 环境的情况下直接使用呢?尤其是面向 windows 众. 因为 Python 是一门解释性的语言,离开了 Python 解释器,P ...

  8. 用gulp把less文件编译成css文件

    第一次使用gulp构建工具,使用gulp将.less文件编译成.css文件并输出.根据视频做了笔记.提供新手和自己以后做参考. HTML文件 <!DOCTYPE html> <htm ...

  9. 在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性

    在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性 Maven 项目生成jar运行时提示“没有主清单属性” 新建了一个Maven的项目,mvn compile和mvn packag ...

  10. 【转载】将python脚本打包成exe文件

    exe文件也就是可以直接执行的文件.通常我们编好的带py后缀的脚本文件都是需要在有python的环境下执 行,每次通过Win + R打开运行窗口再输入powershell打开控制台,再千辛万苦地cd ...

随机推荐

  1. 题解 CF653F Paper task

    CF653F Paper task 给定一个长度为 \(n\) 和括号串,求本质不同的合法括号串个数.\(n\le 5\times 10^5\). 考虑如果不是求本质不同,可以想到 DP. 设 \(f ...

  2. 4、Git之分支操作

    4.1.分支的概述 在版本控制过程中,当需要同时推进多个任务时,可以为每个任务创建的单独分支. 虽然分支的底层实现是指针的引用,但是初学阶段可以将分支简单理解为副本,一个分支就是一个单独的副本. 使用 ...

  3. 【MySQL】编写随机密码生成脚本

    数据需求: 密码规则是 12位 数字 + 字母 混合后MD5加密 然后导出一个表格或者记录文件,文件没明确要求 实现过程: 1.MD5加密函数使用 SET @txt = '123456'; SELEC ...

  4. 【转载】 CPU漏洞 —— 一步一步理解CPU芯片漏洞:Meltdown与Spectre

    原文: https://www.freebuf.com/articles/system/159811.html 参考: https://blog.csdn.net/xy010902100449/art ...

  5. vue之es6语法

    1.背景 2.let与var与const的区别 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. vue 文件流下载

    /**  * 文件转为文件流  * @param {file} file //文件  */ export function getFileBlob(file) {   var dataUrl   va ...

  7. 掌握 Nuxt 3 的页面元数据:使用 definePageMeta 进行自定义配置

    title: 掌握 Nuxt 3 的页面元数据:使用 definePageMeta 进行自定义配置 date: 2024/8/11 updated: 2024/8/11 author: cmdrago ...

  8. 最近公共祖先模板(LCA)

    include <bits/stdc++.h> using namespace std; struct LCA { int n; vector<int> dep; vector ...

  9. Python开发中,SQLAlchemy 的同步操作和异步操作封装,以及常规CRUD的处理。

    在我们使用Python来和数据库打交道中,SQLAlchemy是一个非常不错的ORM工具,通过它我们可以很好的实现多种数据库的统一模型接入,而且它提供了非常多的特性,通过结合不同的数据库驱动,我们可以 ...

  10. Vue Element-ui Table实现动态新增和删除

    达到效果:1.点击添加动态添加一行表格数据 2.点击移除删除一行 templete部分代码 <el-tab-pane label="股东情况"> <el-row& ...