- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章pyinstaller封装exe的操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
我使用的是anaconda。我推荐大家使用anaconda,对环境依赖关系处理的比较好。不用浪费太多时间在安装模块上.
1
|
pip install pyinstaller
|
需要封装的代码为一个api消息框。代码如下,保存的是pyw文件,放在桌面上.
1
2
3
4
5
6
7
|
# -*- coding: utf-8 -*-
"""
created on sun jul 1 21:58:06 2018
@author: fanxiaolei
"""
import
win32api
win32api.messagebox(
0
,
'打倒老残'
,
'友情提示'
)
|
打开windows cmd命令提示符,进入pyinstaller安装目录的scripts文件夹下.
我用的是anaconda,路径为d:\programdata\scripts.
封装命令:pyinstaller -f -w 要封装的文件完整路径.
如下图所示:
按enter键以后封装自动执行.
看下图,我们可以看到exe保存在了scripts目录下的dist文件夹下.
最后一句completed successfully表明创建exe成功.
运行exe后直接会弹出消息框,但不会有黑色的控制台窗口显示.
怎么样?是不是很简单呢?我使用的是64位的anaconda.
封装的是64位的exe.如果你想创建通用的,需要使用32位anaconda,这样创建的32位的exe,可以正常运行于32/64位平台.
补充:pyinstaller打包exe文件出现命令窗口一闪而过 。
用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现gui界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法:
1.添加raw_input()或者os.system(“pause”)等待信息 ,但是添加后依然是命令窗口一闪而过 。
2.在命令窗口打开exe,网上有两种打开exe的方法 。
1
|
start path\project.exe
|
start加exe文件的绝对路径,但是效果和双击exe文件一样,依然是一闪而过 。
1
|
cd path >>project.exe
|
这是先跳转到exe所在的文件夹里,然后输入文件名带不带.exe都行 。
结果第二种报错了,于是一切就从这个美丽的错误开始了 。
但是里面提示了正确的运行方式,输入.\project 带不带.exe都行,然后又运行了一次,终于看到了错误信息,顿时有种泪流满面的感觉啊 。
从错误信息也能看出为什么加入raw_input()或者os.system(“pause”)等待信息没有用,因为根本就没走主程序提示没有no module named requests 但是明明有,并且在pycharm中导入了啊,为什么会提示没有呢?
实在是想不明白,于是去网上查各种资料,终于查到了原因,原来是和编写的工具有关,pacharm 导入的模块并没有安装到电脑的python中模块中去,这就导致了,在pacharm中能正常运行,在命令窗口里运行python文件时却提示错误.
搞明白原因后赶紧去试验了一下,用pip安装了requests后再打包,果然可以了.
在这次查找问题,解决问题的过程中,我总结了一下,这和我一上来就使用pycharm有关,pycharm在编程时确实好用,自动化程度确实高,但是在基础还未学好的情况下我建议还是先使用idle吧,我之前就跳过了idle直接使用的pycharm,我现在也处在自学阶段,就换回了idle,如果python有模块没导入,它会直接提示你,你也只能pip去安装或手动安装,这样打包的时候就不会有缺少模块的问题,也希望大家在以后的学习中碰到问题能及时解决问题,不要像我这样一个简单的问题搞了一天,也许大佬也遇到这个问题,可能感觉问题太简单了,只能我这种小白来给大家当搬运工了.
原文链接:https://blog.csdn.net/qq_24499417/article/details/82866195 。
最后此篇关于pyinstaller封装exe的操作的文章就讲到这里了,如果你想了解更多关于pyinstaller封装exe的操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我需要使用封装打印3个变量,并且无法修改主类。 主类声明变量[汽缸、制造商、所有者],并希望使用如下参数创建和打印一个对象: System.out.println (new Vehicle (cyli
我正在研究“Beginning Ruby”这本书,在我进行封装之前一切都进行得很顺利。我明白这段代码在做什么,我只是不知道为什么要用这些方法设置它。 对于那些感兴趣的人 this is the lin
所以我一直在研究面向对象的完整开发 JavaScript 实践,并对以下示例感到好奇。 据我了解,(这对我来说很有意义)以下“ secret ”字段是“私有(private)”的: var MyObj
在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代
封装 被定义为 把一个或多个项目封闭在一个物理的或者逻辑的包中 。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。 抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可
今天我读了一本书,作者写道,在一个设计良好的类中,访问属性的唯一方法是通过其中一个类方法。这是一个被广泛接受的想法吗?为什么封装属性如此重要?不做会有什么后果?我早些时候在某处读到这可以提高安全性或类
今天我接受了软件工程职位的面试。我已经从 stackoverflow 中阅读了很多关于面试的内容。他们向我询问了与 OOP 相关的正常情况。但他们也问我这些: 没有继承就可以封装吗? 没有继承就可以抽
我正在制作一个简单的网站,并编写了gradle构建脚本,该脚本将执行诸如lint并最小化css / html / js之类的事情。 在这一阶段,我刚刚完成了正在运行的CSS,但是只是初始的非结构化格式
下面的幻灯片是指 C++ 语言,它说 "encapsulation is about ensuring the user uses our ADT in a safe way" 但是,如果他可以访问我
尝试设置一个 Person 类 我在尝试将信息封装在类中以使其不会被意外更改时遇到了问题。除了当我尝试使用 setter/getters 进行封装时,该类工作得非常好。我认为问题是这些方法最终会互相循
面向对象的概念:封装、数据抽象和数据隐藏是3个不同的概念,但彼此之间非常相关。所以我很难通过阅读互联网上的信息来完全理解这些概念。一个地方可用的信息与互联网上另一个地方的信息相矛盾。有人可以指导我阅读
我被封装困住了。在我看来,好像我已经按照规则做了一切,但仍然不起作用。虽然我知道我错过了一些东西。我正在使用 Eclipse。 我想要通过创建一副标准 52 张卡片来进行一些练习,并尝试我学到的新东西
在java中,要获取映射中的所有键,我们可以使用方法keySet。但我想知道为什么方法名称不只是 keys ?名称 Set 是否会泄露有关实现的详细信息? 据我了解,Java 是静态类型语言,名称中包
我正在尝试找出如何防止应用程序中的页面变量被全局定义。我想出了一些方法,但我想知道是否有人们使用的通用标准方法。 我使用这种方法得到了我的插件设计模式:http://www.virgentech.co
我有一个 tcp 连接,我想在服务器类的 HandleConnectionAsync 方法中保持打开状态。它将从客户端接收持续更新。 private async void HandleConnecti
这是我类(class)的一个小样本: #include #include using std::string; using std::vector; struct Book { string
我想要类似下面的代码: class Foo{ public: void update() { for( auto dataModifier : _dataModifierLis
这已经困扰我一段时间了,所以我问了一个同事他是否能理解它,现在我来了;) 为什么可以在依赖属性的 PropertyChangedCallback 中访问持有类的私有(private)成员? 让我通过这
我知道封装意味着一个对象不应该直接访问不同对象的成员……但我猜它与公共(public)领域有关?我假设公共(public)方法不会破坏封装..?我只是在这里不清楚,很高兴得到任何解释。 最佳答案
我就废话不多说了,大家还是直接看代码吧~ ? 1
我是一名优秀的程序员,十分优秀!