New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一些模块移动位置后的兼容性优化 #2
Comments
我测试了一下,确实如你所说。这几天没有空,过上一到两个礼拜,我把这个东西更新上。 另外,Pyinstaller 最近新增了一个提交 pyinstaller/pyinstaller#7713 ,是关于原生实现这个模式(把杂七杂八东西都打包到一个文件夹里)的,已经代码实现了。不过现在应该是开发状态,还没推送到正式版分支中,你可以去看一下。 |
然后我又测试了一下,既然 gooey 使用 sys._MEIPASS 作为模块目录,那我在 hook.py 中把这个变量修改到 libs 文件夹里面不就行了吗。我这边测试是成功了的。 你把 hook.py 内容改成这个试一试: import sys
from pathlib import Path
BASE_DIR = Path(__file__).parent
sys._MEIPASS= str(BASE_DIR / 'libs')
# 为所有已存在于 sys.path 中的路径都插入 libs ,加到 sys.path 中
# 让程序到 libs 文件夹查找依赖
for p in sys.path.copy():
relative_p = Path(p).relative_to(BASE_DIR)
new_p = BASE_DIR / 'libs' / relative_p
sys.path.insert(0, str(new_p))
sys.path.insert(0, str(BASE_DIR)) # 把运行文件所在的根目录排到第一位,优先从根目录查找依赖包 |
嗯嗯,修改的hook文件可以了,感觉也完美多了,避免哪些模块也有这种暗雷。
|
好久没用 pyinstaller,今天一看,都已经更新到 6.2 了,自从 6.0 开始,默认打包都会把杂七杂八文件放入一个子文件夹了! |
下面以gooey模块举例:
用于命令行UI可视化的gooey模块,该模块内部代码使用的sys._MEIPASS还默认根目录作为模块存放目录来工作,所以此种模块还需要整体不移动位置,同时该模块不能添加到excludes里面,否则会分析时漏掉一些py文件,导致软件不能正常运转。
我已经按照你的思路完善了一下解决了这个问题,但是不知道该怎么提交。
The text was updated successfully, but these errors were encountered: