Pyinstall打包一直报IsADirectoryError: [Errno 21] Is a directory: '/usr/local/...
打包py文件只有1行代码print("hello world")排查过环境变量,没看出问题
完整报错:Traceback (most recent call last):
File "/usr/local/bin/pyinstaller", line 33, in <module>
sys.exit(load_entry_point('pyinstaller==5.13.2', 'console_scripts', 'pyinstaller')())
File "/usr/local/lib/python3.7/site-packages/PyInstaller/__main__.py", line 194, in _console_script_run
run()
File "/usr/local/lib/python3.7/site-packages/PyInstaller/__main__.py", line 180, in run
run_build(pyi_config, spec_file, **vars(args))
File "/usr/local/lib/python3.7/site-packages/PyInstaller/__main__.py", line 61, in run_build
PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 1019, in main
build(specfile, distpath, workpath, clean_build)
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/build_main.py", line 944, in build
exec(code, spec_namespace)
File "/Users/yy/Documents/interface/testPy/dyhProject1/base/in/demo17.spec", line 43, in <module>
entitlements_file=None,
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/api.py", line 582, in __init__
entitlements_file=self.entitlements_file
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/api.py", line 240, in __init__
self.__postinit__()
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/datastruct.py", line 184, in __postinit__
self.assemble()
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/api.py", line 300, in assemble
strict_arch_validation=(typecode == 'EXTENSION'),
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/utils.py", line 219, in checkCache
digest = cacheDigest(fnm, redirects)
File "/usr/local/lib/python3.7/site-packages/PyInstaller/building/utils.py", line 402, in cacheDigest
with open(fnm, "rb") as f:
IsADirectoryError: Is a directory: '/usr/local/Python3'
跪求解决方案 报错 `IsADirectoryError: Is a directory: '/usr/local/Python3'` 通常是因为 PyInstaller 尝试打开一个目录,而不是一个文件。以下是一些可能的解决方案:
1. **检查命令参数**:
确保你在打包时,正确地指定了 Python 文件的路径,例如:
pyinstaller your_script.py
2. **环境检查**:
确认你正在使用的 Python 可执行文件是正确的,可以通过以下命令确认:
which python
3. **PyInstaller 清理**:
如果之前的打包过程生成了临时文件或目录,清理它们可能会帮助解决问题。你可以删除 `build` 和 `dist` 目录,然后再次尝试打包:
rm -rf build dist *.spec
pyinstaller your_script.py
4. **Python 可执行文件检查**:
如果你指定了 Python 可执行文件,请确保它是正确的文件,而不是一个目录。
希望这些步骤可以帮你解决问题。如果问题仍然存在,请附带更多的信息,以便进一步诊断。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 1.py文件路径和参数没错,pyinstaller -F /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.py
which python
python: aliased to /usr/local/bin/python3
2.rm -rf build/*执行后,重新打包依旧报错IsADirectoryError: Is a directory: '/usr/local/Python3'
天下第一小可爱 发表于 2024-08-30 16:50
1.py文件路径和参数没错,pyinstaller -F /Users/yy/D ...
好的,感谢你的详细信息。
由于你已经确认了文件路径和参数正确,执行了清理操作,报错依然存在,下一步我们可以检查以下几个问题:
1. **PyInstaller 环境**:
确保你使用的是正确的 PyInstaller 版本,尝试重新安装 PyInstaller:
pip install --upgrade pyinstaller
2. **Python 环境**:
确保你的 Python 环境没有问题,可以尝试创建一个虚拟环境,然后在新的虚拟环境中重新安装 PyInstaller 进行打包:
python3 -m venv myenv
source myenv/bin/activate
pip install pyinstaller
pyinstaller -F /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.py
3. **检查特定的*.spec 文件**:
如果以前曾经使用过 PyInstaller,确保不存在冲突的 `.spec` 文件。可以删除 `demo17.spec` 文件,然后重新打包生成新的 `.spec` 文件:
rm /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.spec
pyinstaller -F /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.py
4. **权限和路径问题**:
确保你的路径和权限没有问题,可以尝试将 `demo17.py` 复制到其它位置进行打包:
cp /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.py ~/demo17.py
cd ~
pyinstaller -F demo17.py
5. **调试模式运行**:
运行 PyInstaller 的调试模式,获得更多详细信息:
pyinstaller -F /Users/yy/Documents/interface/testPy/dyhProject1/base/demo17.py --clean --log-level=DEBUG
希望这些步骤能帮你定位并解决问题。如果依然有问题,请随时告诉我详细的信息。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-8-30 16:50
好的,感谢你的详细信息。
由于你已经确认了文件路径和参数正确,执行了清理操作,报错依然存在,下 ...
1.尝试过重新安装PyInstaller和回退到4.10版本的PyInstaller,当前使用的是5.13.2版本
2.虚拟环境依旧同样报错
34.rm -rf build
rm -rf dist
rm -rf demo17.spec
重新打包生成.spec 文件
5.调试模式输出没看到访问/usr/local/Python3,依旧同样报错
6./usr/local/Python3是软连接 天下第一小可爱 发表于 2024-08-30 17:30
1.尝试过重新安装PyInstaller和回退到4.10版本的PyIns ...
看起来你已经尝试了多个解决方案。根据报错信息和你的描述,可能是因为一些路径配置问题。以下是几个可能的解决方案:
1. **检查 `PATH` 环境变量**:确保你的环境变量中没有包含类似 `/usr/local/Python3` 这样的目录,应该是具体的 Python 可执行文件路径。
2. **路径问题**:确保你的 `demo17.spec` 文件中没有硬编码的路径,避免路径指向目录而不是文件。
3. **使用绝对路径**:在执行 `pyinstaller` 命令时,确保使用的是绝对路径。例如:
pyinstaller /absolute/path/to/your_script.py
4. **检查软连接**:确认你的软连接 `/usr/local/Python3` 是否正确指向了 Python 安装目录,且该目录结构正确。你可以通过命令检查:
ls -l /usr/local/Python3
5. **手动修改 .spec 文件**:如果存在 `.spec` 文件,可以手动检查和修改 `demo17.spec` 文件,确定其中所有路径都是准确的。
6. **升级 Python 版本**:如果可能的话,尝试使用不同版本的 Python 重新创建虚拟环境并进行打包。
7. **清空缓存**:清理 PyInstaller 的缓存,防止缓存问题引起的错误。
rm -rf ~/.cache/pyinstaller
请根据上述提示逐步排查,看看是否能够解决问题。希望对你有帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2024-8-30 17:30
看起来你已经尝试了多个解决方案。根据报错信息和你的描述,可能是因为一些路径配置问题。以下是几个可 ...
1.之前排查过环境变量PATH没有问题
echo $PATH
/Users/yy/Downloads/myenv/bin:/usr/local/bin/python3:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/yy/Downloads/apache-ant-1.10.14/bin:/Users/yy/Downloads/apache-maven-3.8.5/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/yy/Downloads/apache-jmeter-5.4.3/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:.
(myenv)
2.编码和路径都是正确的
3.之前相对路径和绝对路径都试过,同样报错
4.软连接指向正确
5.路径是对的
6.当前Python3.7.0版本,尝试升级版本前,在同事的电脑上同样的Python版本打包是正常的
7.清理缓存同样报错
天下第一小可爱 发表于 2024-08-30 17:51
1.之前排查过环境变量PATH没有问题
echo $PATH
/Us ...
根据你描述的错误和排查情况,我有几个可能的解决方案:
1. **重装PyInstaller和依赖项**:
尝试重新安装PyInstaller和所有相关依赖项,包括Python本身。
pip uninstall pyinstaller
pip install pyinstaller
2. **调整路径中的'python3'项**:
`PATH` 环境变量中有一项是 `/usr/local/bin/python3:`,它可能导致了问题。试着去掉或调整这项。
用如下命令移除 `PATH` 中的 `python3` 条目:
export PATH=$(echo $PATH | sed -e 's|:/usr/local/bin/python3||')
3. **检查软链接和文件权限**:
确认 `/usr/local/bin/python3` 是否真的指向一个可执行文件,而非一个目录。
使用下面的命令检查:
ls -l /usr/local/bin/python3
如果链接有问题,尝试重新创建链接:
sudo ln -sf $(which python3) /usr/local/bin/python3
4. **尝试不使用虚拟环境**:
有时候虚拟环境可能会导致问题。尝试在不使用虚拟环境的情况下打包。
5. **使用明确的文件路径**:
确保 `spec` 文件中使用的文件路径是明确和正确的。
检查一下 `spec` 文件 `/Users/yy/Documents/interface/testPy/dyhProject1/base/in/demo17.spec`,在命令中传递完整路径:
pyinstaller /Users/yy/Documents/interface/testPy/dyhProject1/base/in/demo17.spec
6. **在干净的环境中进行测试**:
创建一个新的虚拟环境,然后重新安装所需的包,再次尝试打包。
python3 -m venv newenv
source newenv/bin/activate
pip install pyinstaller
pyinstaller /path/to/your_script.py
这些步骤应该可以帮助你解决问题。如果问题依然存在,建议提供更多的环境信息或者尝试更详细的调试。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]