Python Kivy 项目未转换为可移植的 .exe 文件

0 投票
1 回答
23 浏览
提问于 2025-04-13 15:59

我创建了一个程序的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 个回答

0

你需要使用一个spec文件来通过pyinstaller构建一个kivy应用。这个应用需要一些额外的文件,这些文件必须和应用一起打包。具体的内容可以在打包文档中找到。下面是一个spec文件的例子,注意路径是根据你项目的结构来定的。这里有一个最近项目的spec文件链接:https://github.com/ElliotGarbus/KivyCythonWinSample/blob/main/inno-pyinstaller/w11-app.spec

其中包含kivy_deps的那几行是非常重要的。

撰写回答