ld: file not found: python.exe报错解决

环境

Mac OS 10.11.6

pyenv 1.2.8

Python 2.7.5

问题

$ pip install lxml==3.6.4

Failed to build lxml

ld: file not found: python.exe
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: command 'clang' failed with exit status 1

----------------------------------------

Failed building wheel for lxml

解决:
2.7.5 是对应的版本号

$ export p=/Users/$(whoami)/.pyenv/versions/2.7.5

$ sed -i -e "s~-bundle_loader python.exe~-bundle_loader ${p}/bin/python2.7~g" "$p/lib/python2.7/_sysconfigdata.py"

再次安装成功了

$ pip install lxml==3.6.4

Successfully built lxml
Installing collected packages: lxml
  Found existing installation: lxml 4.3.3
    Uninstalling lxml-4.3.3:
      Successfully uninstalled lxml-4.3.3
Successfully installed lxml-3.6.4

安装普通包没问题,比如requests ,而需要编译的包,比如lxml就报错

找了很多地方这是因为我使用的是 pyenv , 这应该是它的小问题,不过好在有人已经解决了

参考
Unable to install compiled Python modules under pyenv on OS X 10.10 #273

<think>我们正在解决Python运行时导入错误,缺少libffi.so.6库文件的问题。根据用户提供的错误信息,问题可能出现在系统缺少libffi.so.6这个共享库文件,或者Python环境无法找到它。解决方案通常包括:1.确认系统是否安装了libffi库,并检查版本。2.创建符号链接(如果已安装但名称不匹配)。3.安装或更新libffi库。由于用户之前尝试安装虚拟环境时出现了依赖问题(引用[1]),我们需要注意系统包管理器的状态(如apt)是否正常。步骤:1.首先尝试修复系统依赖:```bashsudoapt --fix-brokeninstall```然后尝试安装libffi库:```bashsudoapt installlibffi-dev```注意:libffi-dev包通常包含libffi.so文件,但具体版本可能不同。2.如果上述方法无效,可以尝试手动创建符号链接。通常,libffi.so.6可能是libffi.so.7的软链接(具体取决于安装的版本)。例如:```bash#查找libffi.so文件的位置sudofind /-namelibffi.so*#假设找到的是/usr/lib/x86_64-linux-gnu/libffi.so.7sudoln -s /usr/lib/x86_64-linux-gnu/libffi.so.7/usr/lib/x86_64-linux-gnu/libffi.so.6```或者将包含该库的目录添加到LD_LIBRARY_PATH环境变量中。3.如果系统没有安装libffi,或者版本太低,可能需要从源码编译安装。4.另外,如果用户使用的是Docker环境(引用[2]提到过Docker),那么可以在构建镜像时确保安装libffi-dev。5.对于Python虚拟环境问题,如果是因为系统包的问题,修复系统依赖后重新安装虚拟环境可能有效。注意:操作前建议备份重要数据。由于用户之前有依赖问题,我们首先尝试修复系统依赖并安装libffi-dev。如果用户是在Docker容器中操作,那么可以在Dockerfile中添加:```DockerfileRUN aptupdate&& aptinstall -y libffi-dev```然后重新构建镜像。如果用户是在宿主机操作,则按照上述步骤执行。如果用户遇到权限问题,可能需要使用sudo。如果问题仍然存在,可能需要检查Python是否链接了正确的库。生成相关问题:1.如何检查系统是否安装了libffi库?2.如何设置LD_LIBRARY_PATH环境变量?3.如何在Docker容器中安装系统包?4.如何从源码编译安装libffi?5.为什么Python会需要libffi库?(因为某些Python包如cffi依赖它)</think>### Python ImportError: libffi.so.6 缺失解决方案 当Python运行时出现`ImportError: libffi.so.6: cannot open shared object file`错误,通常是由于系统缺少`libffi`库或版本不匹配导致的。以下是逐步解决方案: #### 1. **修复系统依赖关系** 首先尝试修复apt包管理器问题(参考[^1]): ```bash sudo apt --fix-broken install sudo apt update sudo apt upgrade ``` #### 2. **安装libffi库** 安装兼容版本的系统库: ```bash sudo apt install libffi7 # Ubuntu 20.04+ # 或 sudo apt install libffi6 # 旧版系统 ``` #### 3. **创建符号链接** 如果已安装但路径不匹配: ```bash # 查找现有库路径 sudo find / -name libffi.so* 2>/dev/null # 创建符号链接(示例路径) sudo ln -s /usr/lib/x86_64-linux-gnu/libffi.so.7 /usr/lib/libffi.so.6 ``` #### 4. **设置环境变量** 临时指定库路径: ```bash export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH ``` #### 5. **重建Python环境** 对于虚拟环境或容器环境(参考[^2]): ```bash # 重建虚拟环境 python -m venv --clear myenv # Docker容器中需确保基础镜像包含: # RUN apt update && apt install -y libffi-dev ``` #### 6. **验证修复** ```bash ldd $(which python) | grep libffi # 应显示:libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 ``` > **注意**:在Docker环境中,需在构建阶段安装`libffi-dev`包;若以root运行,按[^2]建议配置`allow_root`参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值