吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1226|回复: 27
收起左侧

[求助] python小白求助

[复制链接]
shr123 发表于 2022-12-13 22:14
本帖最后由 shr123 于 2022-12-14 10:08 编辑

纯小白
1.python用pyinstaller导出exe很慢且文件很大,试了网上的创建纯净环境还是一样,我看到易语言等编程语言导出的exe有的甚至不到1m,python该怎么做到
2.在编辑器里直接跑程序,调取本地路径文件的时候,没什么问题,我的py文件在桌面,程序会在桌面找文件
导出exe之后,就会自动跑到“C:\Users\Administrator\AppData\Local\Temp\_MEIxxxxx\”去找文件,结果就是找不到我指定的文件
各位大佬有办法吗
3.python在命令行里如何实现按任意键退出,求代码
4.py打包出来的程序为啥不能在OD里跑,显示不是一个32位PE文件

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| shr123 发表于 2022-12-14 10:02
顺便问一下,我py打包出来的程序为啥不能在OD里跑,显示不是一个32位PE文件
cflying 发表于 2022-12-13 22:32
python不咋适合打包exe,你的库整多了不管咋打包都大
还是go或者rust之类的好点
甜萝 发表于 2022-12-13 22:36
第三个问题 在已经进入到python解释器的情况下 在命令行中输入exit() 然后按Enter (回车键) 就退出python解释器了
787821 发表于 2022-12-13 22:43
加上-w就好了
冬酒暖阳 发表于 2022-12-13 22:55
本帖最后由 冬酒暖阳 于 2022-12-13 23:11 编辑

1. python 打包的这个问题你是用了很多第三方库吗,这个问题大概没有很好的解决方法,因为pyinstaller的打包方式就是把整个环境都打包到exe里,包括python和你安装的第三方库

2. 这个问题得看你的具体需求,你是想让需要读取的文件还是保存在桌面上,然后你还是从桌面去读取,那你就把打包好的程序放到桌面上就好,是可以用相对路径的,如果你想把程序放到其他的地方,不想放到桌面,同时文件还继续放在桌面。那就在程序里通过下面的代码获取到桌面的路径

[Python] 纯文本查看 复制代码
os.path.join(os.path.expanduser("~"), 'Desktop')



3. 在python里实现按回车键退出程序简单,但是按任意键就有点复杂。如果局限在 windows 系统上,你可以引入 os 这个库,然后执行 os.system('pause') 这个语句,就能实现你的需求

[Python] 纯文本查看 复制代码
import os
os.system('pause')
hrpzcf 发表于 2022-12-13 23:37
本帖最后由 hrpzcf 于 2022-12-13 23:39 编辑

Python打包的原理就是把源码和运行环境打包到一个exe文件里。如果打包成单个exe文件,运行时它首先会将环境和Python文件解压到系统临时文件夹(也就是你说的那个路径)里再运行,如果你想把资源文件打包进exe那就用--add-data打包参数,如果你想让程序在exe所在目录找资源,那代码中就用 os.path.dirname(__file__)获取当前代码文件(打包后获取到的是虚拟pyc文件所在目录,如果程序只有一个文件,那虚拟pyc文件所在目录就等同于exe文件所在目录)所在目录,而且打包成单文件、单目录、不打包,通过各个方法获取到的路径也有些区别,具体如何使用好pyinstaller要去看它的文档,一两句话是说不清楚的。
 楼主| shr123 发表于 2022-12-14 00:02
本帖最后由 shr123 于 2022-12-14 00:45 编辑
冬酒暖阳 发表于 2022-12-13 22:55
1. python 打包的这个问题你是用了很多第三方库吗,这个问题大概没有很好的解决方法,因为pyinstaller的打 ...
你是想让需要读取的文件还是保存在桌面上,然后你还是从桌面去读取,那你就把打包好的程序放到桌面上就好,是可以用相对路径的

[Python] 纯文本查看 复制代码
os.path.dirname(__file__)

我的代码是这个,我的程序和文件都在桌面上,但是他获取到的是临时文件夹里的路径,是不是程序是否放在桌面上都要用你提供的这个代码
或者说 打包的时候什么方式能让我那串代码获取到文件所在路径的文件
 楼主| shr123 发表于 2022-12-14 00:05
hrpzcf 发表于 2022-12-13 23:37
Python打包的原理就是把源码和运行环境打包到一个exe文件里。如果打包成单个exe文件,运行时它首先会将环境 ...

我把他的所有需要的文件全打包出来就不会生成临时文件夹了吧,是不是那样我获取到的路径就是程序所在的路径了
 楼主| shr123 发表于 2022-12-14 00:47
cflying 发表于 2022-12-13 22:32
python不咋适合打包exe,你的库整多了不管咋打包都大
还是go或者rust之类的好点

那你比较推荐哪个 等我py学有所成之后我可以考虑转行
hrpzcf 发表于 2022-12-14 02:04
本帖最后由 hrpzcf 于 2022-12-14 02:06 编辑
shr123 发表于 2022-12-14 00:05
我把他的所有需要的文件全打包出来就不会生成临时文件夹了吧,是不是那样我获取到的路径就是程序所在的路 ...

会生成临时文件夹的,这是打包原理决定的
如果你的程序只有一个 py 文件,那你想要实现打包后访问exe同目录的资源文件的话,可以这样:
[Python] 纯文本查看 复制代码
def get_path(*rel_paths):
    if getattr(sys, "frozen", False):
        start_point = os.path.dirname(sys.executable)
    else:
        start_point = os.path.dirname(__file__)
    return os.path.join(start_point, *rel_paths)

# 通过这个函数获取文件路径
p1 = get_path("文件.txt") # 文件.txt 与源码或打包后的exe在同一文件夹下
p2 = get_path("abc", "文件.txt") # 文件.txt 在源码或打包后的exe同一目录下的 abc 文件夹里
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 04:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表