我做了一个库存管理系统,使用sqlite3作为数据库,使用customtkinter作为GUI。当通过VSCode运行时,代码按预期工作。我在苹果电脑上用MacOS Ventura。我想把代码作为一个应用程序发送,这样可以方便最终用户。
使用py 2app打包代码后,别名版本和部署版本将在Dist目录中按预期运行。然而,当我将代码从Dist中取出时,例如进入我的桌面时,它会遇到启动错误。
ImportError: dlopen(/Users/name/Desktop/stockmanager.app/Contents/Resources/lib/python3.11/lib-dynload/_sqlite3.so, 0x0002): Symbol not found: _sqlite3_enable_load_extension
Referenced from: <8B6D5BCF-C215-35A7-B03F-EDE59AAF1BC3> /Users/name/Desktop/stockmanager.app/Contents/Resources/lib/python3.11/lib-dynload/_sqlite3.so
Expected in: <AB447288-47E6-30D9-BD4C-BDFDAE0CBBC3> /usr/lib/libsqlite3.dylib
从我所能理解的,它找不到Sqlite3库。我用homebrew安装了python3.11,sqlite3默认安装了它。我仍然尝试直接通过自制软件安装sqlite3。我甚至从官方网站下载了sqlite3.dylib来插入到包内容中,但我不知道在哪里可以这样做。
由于代码通常在VSCode和Dist目录中运行,因此我可以假设系统上正确安装了Sqlite3。我意识到我可以将“sqlite3.dylib”添加到“usr/lib/”目录中,但感觉它只会在这个特定的系统上修复它。我如何正确地 Package 它?
1条答案
按热度按时间pieyvz9o1#
澄清一下,你在VSCode项目中使用了venv(虚拟环境)吗?如果是这样的话,我可能会尝试使用cxFreeze,因为我个人有更多的运气让它工作一致。你只需要添加一个setup.py文件到根目录,然后把这个文件放在那里:
然后从根目录运行
python setup.py build
,您应该有。构建文件夹与功能.exe文件。如果出于某种原因,您没有venv设置,那么您的第一个订单肯定是获得venv设置,因为它使整个过程变得更加容易。这里有一个很好的指南:https://code.visualstudio.com/docs/python/environments
如果你有更多的问题,请随时发表评论,我会尽力帮助。