使用PyInstaller打包Python程序

使用PyInstaller打包Python程序,第1张

PyInstaller是一个用来将Python程序打包成独立可执行软件的工具,支持 Windows、Linux 和 Mac OS X。生成的可执行软件在没有Python的环境中可以直接运行,方便软件分发,进一步降低使用成本,提升使用效率。

下面演示如何使用 PyInstaller 将程序打包成Windows下的exe软件。

使用pip的方式进行安装,这样可以自动安装其他依赖库。

如果pip还未安装,请参考我的另一篇文章《 Python pip包管理工具 》

在cmd命令行控制台或者VS Code内置的终端输入命令行生成应用,首先将当前路径切换到Python程序所在的路径(如下示例的SubOcrpy文件在python文件夹下的SubOcr文件夹内),然后输入生成应用的命令。

命令执行成功后在 I:\work\python\SubOcr\dist 文件夹下生成了SubOcr文件夹,里面包含了SubOcrexe文件。整个SubOcr文件夹就是一个绿色软件,随便移动到任何位置都可运行。

实际上在用pyinstaller命令时会在Python程序的所在路径生成一个后缀为spec的同名文件,然后根据此文件的配置生成应用,这就是PyInstaller的原理。这样做的好处是spec保存了生成应用的配置,每次重新生成应用时可以省略指定参数,尤其是指定了其他的资源、程序库时。我们可以通过以下命令先生成spec文件。

pyi-makespec的命令参数跟pyinstaller的相同,在生成spec文件后可以对其部分选项进行编辑(可以用VS Code或自带的记事本编辑),添加更多参数,然后再用pyinstaller命令生成应用。

spec文件的主要选项:

上面示例的SubOcr用到了opencc和opencv-python,其中opencc下的数据文件和opencv-python下的dll文件在生成应用时不会自动导入(缺少这些文件应用无法正常使用),因此需要在spec文件中指定路径。对spec文件的修改如下:

以上便是PyInstaller打包Python程序的全过程,如果在此过程中遇到问题,可以在评论区留言,定当知无不言,言无不尽。

1、首先,打开运行输入框,输入cmd后回车,进入命令行。

2、然后,在命令行输入:cd C:\Users\Administrator\Desktop\dafeiji\aaa\dist\zcx 要封装的py文件的路径。

3、然后,在命令行输入:pyinstaller 文件名py 。

4、等待安装完成,安装完成后,进入到程序路径文件夹可以看到新增的文件:dist和build,打包好的exe文件就放在了dist里。

5、最后打开dist,就能看到打包好的可执行文件exe了。

解决方法

1、输入的中划线“-”格式不对,检查是否为全角状态下输入,误输入了下划线“_",或是前后有空格;

2、没有引用EntityFramework命令,请执行如下名称(Import-Module 项目路径\packages\EntityFramework613(EF版本)\tools\EntityFrameworkpsd1)

另外需要注意的是,执行命令时,默认项目一定要选择包含模型的项目。

具体执行:

1、CMD->powershell, 进入PowerShell 模式,进入成功后,会在命令行左边出现PS字样;

2、CMD->Get-ExecutionPolicy, 查看我们当前作用域是否具备执行PowerShell 的命令;

3、CMD->Get-ExecutionPolicy -List 查看当前所有作用域 。

PersistenceConfig(持久层配置)

我们想要一个配置了所有可用仓库的MONGODB配置。在这个简单的应用中我们只用了一个仓库,所以配置也非常的简单:

@Configuration

class PersistenceConfig {

@Bean

public AccountRepository accountRepository() throws UnknownHostException {

return new MongoAccountRepository(mongoTemplate());

遇到这样的问题指的是缺少dll文件,但是这个错误往往会让人很困扰,因为它不会提示具体缺少什么dll文件。想要正确的把缺少的dll找到,就得查看打包运行时的错误警告,除了在shell查看以外,还可以在/build/name/warnnametxt中查看。

找出缺失的dlls以后,可以在打包时加上--add-binary选项:

pyinstaller --add-binary '/path/to/somedll:' myscriptpy

或者在spec文件中添加更多的dlls:

a = Analysis(

binaries=[('/path/to/somedll', ''), ],

)

以上就是关于使用PyInstaller打包Python程序全部的内容,包括:使用PyInstaller打包Python程序、pyinstaller打包的exe执行总是有个命令窗口,怎么让这个命令窗口不显示、无法将"pyinstaller"项识别为 cmdlet,函数,脚本文件或可运行程序的名称等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10141779.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存