Open Promisey opened 1 year ago
same problem
+1
运行dist文件夹下的程序,看看控制台的日志输出是怎样的?
执行以下程序: 终端提示如下:
通过pip3 list确定一下有没有装上PySide6?这里的python环境没识别到这个模块。
https://stackoverflow.com/questions/71903771/modulenotfounderror-no-module-named-pyside6-in-python-using-visual-studio-cod 参照过这个帖子重新安装,包括再使用命令pip3 install pyside6重新安装,显示已安装,如图:
但重装完,还是一样的报错。
抱歉,手头上并没有Mac电脑,我得装个虚拟机测试一下,你也可以尝试在卸载pyside相关包后用conda install pyside6试试?
感谢尝试去复现解决🙏
conda install pyside6一直卡住,
我从https://anaconda.org/conda-forge/pyside6 下载.conda文件,然后从本地安装后
再运行keymousego,也还是一样的提示。
问题应该是依赖被装到了全局pip环境中,我在conda的虚拟环境下这样操作也遇到了相同的问题,退出虚拟环境后发现用pip装的库都在全局环境内。
经过测试,使用以下方法可以正常打包运行:
conda create -n py310 python=3.10 # 建议使用python3.10及以下版本,测试时使用python3.11打包遇到了其它的问题
conda activate py310
pip3 install -r requirements-universal.txt
pip3 install pyinstaller
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py
运行dist/keymousego可能会报permission denied错误,需要给予以下文件夹读写权限
sudo chmod -R 770 <executable-work-directory>
sudo chmod -R 770 ~/.qt_material
如果遇到无法录制操作等问题,需要将打包的程序添加到隐私和安全/辅助功能
中。
奇怪🤔按一样的命令重新创建conda环境,重新来过,还是提示缺pyside6
复现不了这个问题😟,我使用的是通过bash安装的miniconda3-latest.
也许打包时手动指定依赖路径可以解决?
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py -p <conda-directory>/envs/<env-name>/lib/python<version>/site-packages
或者手动指定引用
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py --hidden-import PySide6
两种方式都尝试过,运行完再运行dist/KeymouseGo 还是报错,两种方式都是截图这样的报错提示。 不过与之前的报错不一样了,改提示ModuleNotFoundError: No module named 'Recorder'
参照这个帖子解决安装pyaudio的问题,然后才安装好Recorder,但是再尝试执行
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py -p <conda-directory>/envs/<env-name>/lib/python<version>/site-packages
和
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py --hidden-import Recorder
重新打包,再运行dist/KeymouseGo,还是报错ModuleNotFoundError: No module named 'Recorder'
这里用的Recorder
是自建包,这样的话需要把工程路径也添加到搜索路径
pyinstaller -F -w --add-data "./assets:assets" KeymouseGo.py -p <keymousego-directory>:<conda-directory>/envs/<env-name>/lib/python<version>/site-packages
是不是我的 keymousego-directory 填错了,还是一样的报错。
路径没有错,而且根据日志看来即使不手动添加工程路径,打包时也会搜索这里的。我比对了一下虚拟机上打包的日志和你的日志,有一些模块没有引用进来(比如没看到hook-pynput.py
)。我反复重装了几次conda环境,打包时都没有复现出这个问题。🤔
1.如果没有重装过conda环境,可能是其它地方装的pyinstaller在环境变量中,对虚拟环境产生了干扰?可以通过
whereis pyinstaller
检查一下路径是否为
<anaconda-directory>/envs/<env-name>/bin/pyinstaller
2.打包的时候删除工程目录下build
,dist
和__pycache__
并在打包命令中附加--clean
参数避免先前打包产生缓存的影响。
3.如果这些方法没效果,可能重装anaconda环境能解决吧。
Py310这个环境就是依据您前面的回复,重新创建的。
whereis pyinstaller 命令显示路径应该没问题
重新打包的时候删除了build, dist,加上--clean参数,也还是报错ModuleNotFoundError: No module named 'Recorder',不过KeymouseGo-master文件夹里没找到pycache
另外我发现打包的时候识别到的平台是:421 INFO: Platform: macOS-10.16-x86_64-i386-64bit,但我用的实际是MacBook air M1 2020,不知道是否和这有关。
那要不尝试重装一下anaconda?现在的anaconda是有苹果M1版本的,虽然mac也能跑x86的程序。
我是使用 M1 Mac Python 3.12.5 環境,沒有 PySide6==6.4.3 版本。
提示訊息已說明:6.4.3 Requires-Python <3.12,>=3.7;
Macbook M1 按如上步骤后, 尝试打开dist文件夹下的KeymouseGo.app,在程序坞跳动几下就没了。 尝试打开build文件夹下的KeymouseGo.pkg,报错提示:“未能完成操作。(com.apple.installer.pagecontroller错误-1。),不能打开’KeymouseGo.pkg‘。”