我正在努力使用pyinstaller,每当我使用kivy GUI构建这个特定的脚本并在构建之后运行.exe时,我会收到致命的错误,它无法执行脚本。我在cmd中运行了它,它给了我错误:IOError: [Errno 2] No such file or directory: 'main.kv'
我尝试在启动构建时使用--add-data添加.kv文件以及mdb和dsn文件(在脚本中使用pypyodbc),但这样做会出错:unrecognized arguments: --add-data'main.kv'
(其余的--add-data指定文件如下)
有没有解决方案或替代方法?
答案 0 :(得分:24)
正如其他人(@Anson Chan,@ schlimmchen)所说:
如果要添加一些其他文件,则应使用Adding Data Files。
--add-data
datas=
pyinstaller
时生成。
*.spec
文件。pyinstaller
将直接使用您的*.spec
文件。Parameter
逻辑 --add-data
或datas=
中的参数:
--add-data
:
{source}{os_separator}{destination}
os_separator
:
;
:
source
和destination
source
:单个或多个文件的路径,支持glob语法。告诉PyInstaller在哪里找到文件。destination
一个或多个文件:目标文件夹,它将在运行时包含您的源文件。
* 注意:不目标文件名。
'src/README.txt:.'
'/mygame/sfx/*.mp3:sfx'
/mygame/data:data'
datas=
added_files = [
( 'src/README.txt', '.' ),
( '/mygame/data', 'data' ),
( '/mygame/sfx/*.mp3', 'sfx' )
]
a = Analysis(...
datas = added_files,
...
)
对于您的(Windows操作系统)是:
--add-data
pyinstaller -F --add-data "main.kv;." yourtarget.py
OR:
datas=
文件中的yourtarget.spec
,请参见以下内容:a = Analysis(...
datas = ["main.kv", "."],
...
)
答案 1 :(得分:20)
如果您检查pyinstaller -h
以获取帮助,则可以找到--add-data
选项,例如[--add-data <SRC;DEST or SRC:DEST>]
。所以在你的情况下试试
pyinstaller -F --add-data "main.kv;main.kv" yourtarget.py
答案 2 :(得分:1)
解决方案是运行:pyi-makespec yourscript.py
然后编辑yourscript.spec脚本并在a = Analysis中将数据添加到数据下。
datas=[ ( '/pathToYourFile/main.kv', '.' )]
然后运行pyinstaller yourscript.spec
之后应该很好。
答案 3 :(得分:0)
我的应用程序遇到了这个问题,如果不是不可避免的话,随后的问题很可能 。
使用crifan的答案中的--add-data
。
一旦PyInstaller将kv文件放在正确的目录中,Kivy仍然找不到该文件。
可能的症状:
AttributeError示例:
我自己的情况:
AttributeError: 'NoneType' object has no attribute 'ids'
幸运的是,this answer解决了这个问题。