gpt4 book ai didi

python - pyinstaller 在程序内找不到文件路径

转载 作者:行者123 更新时间:2023-12-01 09:27:03 26 4
gpt4 key购买 nike

我创建了一个测试工具来检查是否有任何模块无法与 pyinstaller 一起使用,以便我可以在主程序上使用 pyinstaller 之前解决它们。

当我尝试与脚本中的文件路径交互时,pyinstaller 创建的程序似乎找不到我尝试硬编码到脚本中的路径,例如“Z:\mkb\crew\mark_conrad\pictures\psd_tool_test_files\test.psd”。我决定使用简单的 os.path.exists() 来调试这个谜团,但没有运气。当我从 python 控制台运行调试程序时,它工作得很好,那么这里出了什么问题呢?

我如何生成exe:pyinstaller“Z:\mkb\programing\python\util\pyinstaller_library_tester.py”

Python版本:2.7.15PyInstaller版本:3.3.1

领事输出:

Testing: Z:\mkb\crew\mark_conrad\pictures\psd_tool_test_files\test.psd
>>> This path does not exsist.
Path Results: False

Testing: Z:\\mkb\\crew\\mark_conrad\\pictures\\psd_tool_test_files\\test.psd
>>> This path does not exsist.
Path Results: False

Testing: Z:/mkb/crew/mark_conrad/pictures/psd_tool_test_files/test.psd
>>> This path does not exsist.
Path Results: False

Testing: Z://mkb//crew//mark_conrad//pictures//psd_tool_test_files//test.psd
>>> This path does not exsist.
Path Results: False

调试程序代码:

def checkingPaths(path,btn):
import os

if os.path.exists(path):
print '>>> Found a working path use this for your formats for paths'
print 'Path Results:',os.path.exists(path)
btn.configure(bg='#00cc30')
else:
print '>>> This path does not exsist.'
print 'Path Results:',os.path.exists(path)
btn.configure(bg='#ff0000')

def osTest(btn):

print r'Testing: Z:\mkb\crew\mark_conrad\pictures\psd_tool_test_files\test.psd'
checkingPaths("Z:\mkb\crew\mark_conrad\pictures\psd_tool_test_files\test.psd",btn)

print r'Testing: Z:\\mkb\\crew\\mark_conrad\\pictures\\psd_tool_test_files\\test.psd'
checkingPaths("Z:\\mkb\\crew\\mark_conrad\\pictures\\psd_tool_test_files\\test.psd",btn)

print r'Testing: Z:/mkb/crew/mark_conrad/pictures/psd_tool_test_files/test.psd'
checkingPaths("Z:/mkb/crew/mark_conrad/pictures/psd_tool_test_files/test.psd",btn)

print r'Testing: Z://mkb//crew//mark_conrad//pictures//psd_tool_test_files//test.psd'
checkingPaths("Z://mkb//crew//mark_conrad//pictures//psd_tool_test_files//test.psd",btn)

def tkinterTest():
import Tkinter as tk

root = tk.Tk()

osBtn = tk.Button(root,text='os Test',command =lambda: osTest(osBtn))

osBtn.pack(padx=10,pady=2,fill='x')

root.mainloop()

tkinterTest()

最佳答案

它会创建一个在 sys._MEIPASS 下“编译”时必须使用的新路径。我通常会创建一个函数来解析相对资源路径,具体取决于是否在 python 中运行或“编译”时运行,如下所示:

def get_correct_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath(".")

return os.path.join(base_path, relative_path)

还要确保您将这些文件正确包含在规范文件中。

关于python - pyinstaller 在程序内找不到文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50302229/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com