Python Kivy 项目未转换为可移植的 .exe 文件
我创建了一个程序的exe文件。在我的电脑上运行得很好。但是如果我把这个exe文件发给另一台电脑,它就会提示“找不到名为'login.kv'的文件/目录”。
我需要一个独立的exe文件,无论放在哪里,或者放在什么电脑上,都能运行,而且不需要源代码。
我创建了一个Python Kivy项目,里面有很多.py和.kv文件。然后我用Pyinstaller把它打包成了一个exe文件。
我使用的命令是:pyinstaller --onefile --add-data "*.py;." --add-data "*.kv;." login.py
。这样生成的exe文件运行得很好。
但是,当我只把这个exe文件发给另一台电脑时,它就会说“找不到名为'login.kv'的文件/目录”。
我尝试过使用pyinstaller、cx_Freeze、Auto Py to Exe等等……
这是不是因为我在代码中用这样的方式返回了kv文件:return Builder.load_file('C:/Users/Admin/PycharmProjects/CCV4Project/Main/main.kv')
?
如果我使用绝对路径之类的,
def resource_path(relative_path):
try:
base_path = sys._MEIPASS
except Exception:
base_path = os.path.abspath('.')
return os.path.join(base_path, relative_path)
还有return Builder.load_file(self.resource_path('login.kv'))
它会根据文件的位置去寻找。
但是,我想要一个可以运行我整个项目的exe文件,无论它放在哪里。基本上,它应该像一个应用程序一样。
1 个回答
你需要使用一个spec文件来通过pyinstaller构建一个kivy应用。这个应用需要一些额外的文件,这些文件必须和应用一起打包。具体的内容可以在打包文档中找到。下面是一个spec文件的例子,注意路径是根据你项目的结构来定的。这里有一个最近项目的spec文件链接:https://github.com/ElliotGarbus/KivyCythonWinSample/blob/main/inno-pyinstaller/w11-app.spec
其中包含kivy_deps的那几行是非常重要的。