这个问题在网上答案可能很多:
下面给出鄙人的经历和参考:该问题的核心可能是 没有安装lib造成的,那么你可能会问,”我已经安装了呀,并且pycharm运行正常~“
这里要注意:新版本的pycharm现在都会在开发目录下创建一个venv的文件夹, 您安装的lib有可能是在这个venv里面, 而不再全局的python安装目录里面!!
-------
然而,您使用的命令可能是基于 python安装目录里面 pyinstaller 。。
故,您只要打开python 的安装目录如:D:\python311\Scripts,,,在这个目录里打开cmd,如下图:
再次执行缺失的 Module 的安装命令: ./pip3.exe install xxx 即可~ 完后 ~
再次执行 pyinstaller 打包~~~ 码字真累!
---------------
在这,码字累,但时间宝贵! 鄙人给出 个人使用的pyinstaller 打包命令, 您只要复制到bat文件里,改改icon, 和 入口文件 py_file 即可,参考如下
echo off
rem https://pyinstaller.org/en/stable/usage.html#options
rem 请把python:path/Scripts添加到系统路径
rem cxfreeze,pyinstaller都在这个路径下
rem !!!在windows下编写bat,路径使用[\],不要使用 [/]
rem py文件,不要带后缀[.py]
set curPath=%cd%
set py_file=main
rem 中间目录
set out_dir=.\dist
rem 自己的模块位置
set my_py_module_path=.\
rem 图标icon
set icon=%curPath%\main.ico
rem 解决:ModuleNotFoundError: No module named 'fastapi'
set hidden_import=--hidden-import=uvicorn --hidden-import=fastapi --hidden-import=main
echo %cd%
rem warning: 在执行完毕会删除中间目录,同时会把exe拷贝到上层目录
rem 所以建议把中间目录就设置在工作目录下
rem 文档:https://pyinstaller.readthedocs.io/en/v3.5/
rem LEVEL may be one of TRACE, DEBUG, INFO, WARN, ERROR, CRITICAL (default: INFO).
pyinstaller --onefile --nowindowed %hidden_import% --distpath=%out_dir% --workpath=%out_dir%\build --specpath=%out_dir%\build --path=%my_py_module_path% --name=%py_file%.exe -y --clean --log-level=INFO --icon=%icon% %py_file%.py
rem 复制到当前目录
copy /Y /B %out_dir%\%py_file%.exe .\
rem 删除目录
rd /Q /s %out_dir%
echo "finish!"
rem --------------------
rem 下面的命令可以用
rem cxfreeze files_copy.py --target-dir ./build --include-path=../../ -O -OO -c --icon=copy.ico
注意在hidden_import隐藏了一个不能理解的module:--hidden-import=main
这一行是为了解决下面的这个错误:
参考:python - Running FastAPI multiple process error after pyinstaller - Stack Overflow
ERROR: Error loading ASGI app. Could not import module "main".
--------
打包后的exe, 在正式运行的时候,不能带有 reload=True , 否则会一直刷日志, 具体原因还不知晓~