赞
踩
这个问题在网上答案可能很多:
下面给出鄙人的经历和参考:该问题的核心可能是 没有安装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 , 否则会一直刷日志, 具体原因还不知晓~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。