ModuleNotFoundError:没有名为'pyexpat'的模块

时间:2017-07-16 20:11:25

标签: python module install

我的目标主机是SUSE 11,但无法访问互联网。 我能够从源代码安装Python 3.6.1但是我必须使用--with-ensurepip = no来禁用pip 否则安装失败,出现ModuleNotFoundError:没有名为'pyexpat'的模块 如果我尝试使用get-pip.py安装pip,我会得到同样的错误。 (那里没有惊喜)

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我也遇到同样的构建错误,但是使用了pyenv。我不确定我的解决方案是否会起作用,但希望它能起作用。

我花了整整4个小时的搜索时间,网上的每个人似乎都在说Mojave及更高版本缺少某些标头,然后指示您在此处手动下载这些标头:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

但是我认为安装这些标头实际上是导致我出现问题的原因。

我不知道它是否真的是正确的解决方法,但是唯一适合我的方法是转到enter image description here并下载/重新安装命令行工具。

重新安装命令行工具后,我安装了据称丢失的标头。然后,我没有遇到因缺少pyexpat模块而导致构建失败的情况。

答案 1 :(得分:1)

以下步骤为我解决了这个问题:

sudo rm -rf /Library/Developer/CommandLineTools
xcode-select --install

之后,我使用以下命令安装了python:

python-build 3.6.10 ~/.runtimes/Python36

(请注意,您可以根据需要更改版本)

此外,正如答案之一所述,运行

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

xcode-select --install之后又为我打破了事情。

答案 2 :(得分:0)

我可以按照here所述的说明解决问题:

具体来说就是for循环:

for m in _struct binascii unicodedata _posixsubprocess math pyexpat _md5 _sha1 _sha256 _sha512 select _random _socket zlib fcntl; do 
    sed -i "s/^#\(${m}\)/\1/" Modules/Setup; 
done

非常感谢沃伦和所有为此职位做出贡献的人。