【问题标题】:MacOS: ModuleNotFoundError: No module named '_ctypes'MacOS:ModuleNotFoundError:没有名为“_ctypes”的模块
【发布时间】:2021-09-15 08:09:40
【问题描述】:

我在 pyenv 环境中使用我的 python 和 pip,但是当我尝试使用 pip 安装 numpy 时:

pip install numpy

我收到以下错误,有人知道我哪里出错了吗?

使用缓存的 numpy-1.21.0.zip (10.3 MB)
收集 numpy 安装构建依赖项...完成获取构建要求 wheel ... done 错误:异常:回溯(最近一次调用最后一次):
文件 “/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/cli/base_command.py”,第 188 行,在 _main status = self.run(options, args) 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/cli/req_command.py”, 第 185 行,在包装中 返回 func(self, options, args) 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/commands/install.py”,第 333 行,在跑步 reqs,check_supported_wheels=not options.target_dir 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py”, 第 179 行,解决中 found_reqs.extend(self._resolve_one(requirement_set, req)) 文件 "/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", 第 362 行,在 _resolve_one abstract_dist = self._get_abstract_dist_for(req_to_install) 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py”, 第 314 行,在 _get_abstract_dist_for abstract_dist = self.preparer.prepare_linked_requirement(req) 文件 “/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/operations/prepare.py”,第 488 行,在 prepare_linked_requirement req,self.req_tracker,self.finder,self.build_isolation,文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/operations/prepare.py” ,第 91 行,在 _get_prepared_distribution 中 abstract_dist.prepare_distribution_metadata(finder, build_isolation) 文件 "/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/distributions/sdist.py", 第 38 行,在 prepare_distribution_metadata 中 self._setup_isolation(finder) 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_internal/distributions/sdist.py”, 第 96 行,在 _setup_isolation 中 reqs = backend.get_requires_for_build_wheel() 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_vendor/pep517/wrappers.py”, 第 161 行,在 get_requires_for_build_wheel 'config_settings':config_settings 文件“/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_vendor/pep517/wrappers.py”, 第 265 行,在 _call_hook 中 raise BackendUnavailable(data.get('traceback', '')) pip._vendor.pep517.wrappers.BackendUnavailable: Traceback (最近 最后调用):文件 “/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py”,第 86 行,在 _build_backend obj = import_module(mod_path) 文件 "/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/importlib/init.py", 第 127 行,在 import_module 中 return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "",第 983 行,在 _find_and_load 文件中 “”,第 953 行,在 _find_and_load_unlocked 文件“”,第 219 行,在 _call_with_frames_removed 文件“”,第 1006 行,在 _gcd_import 文件“”,第 983 行, 在 _find_and_load 文件“”中,第 967 行,在 _find_and_load_unlocked 文件“”,第 677 行,在 _load_unlocked 文件中“”,第 728 行,在 exec_module 文件中 “”,第 219 行,在 _call_with_frames_removed 文件“/private/var/folders/nk/t9xyqhd94zzd6br4x5rg_jj80000gn/T/pip-build-env-9l_6shz6/overlay/lib/python3.7/site-packages/setuptools/init.py”,第 23 行,在 从 setuptools.dist 导入分发文件“/private/var/folders/nk/t9xyqhd94zzd6br4x5rg_jj80000gn/T/pip-build-env-9l_6shz6/overlay/lib/python3.7/site-packages/setuptools/dist.py”,第 34 行, 在 从 setuptools 导入 windows_support 文件“/private/var/folders/nk/t9xyqhd94zzd6br4x5rg_jj80000gn/T/pip-build-env-9l_6shz6/overlay/lib/python3.7/site-packages/setuptools/windows_support.py”, 第 2 行,在 导入 ctypes 文件 "/Users/xxx/.pyenv/versions/3.7.11/lib/python3.7/ctypes/init.py", 第 7 行,在 from _ctypes import Union, Structure, Array ModuleNotFoundError: No module named '_ctypes'

【问题讨论】:

  • 什么版本的 MacOS?您有新的 M1 mac 还是 Intel Mac?
  • MacBook Air(M1, 2020), mac OS Big Sur version 11.2.3, Chip Apple M1, Memory 16GB

标签: python pip ctypes pyenv


【解决方案1】:

以下脚本适用于我的 MacBook Pro(M1,2020),MacOS:Big Sur 11.5.2。我希望这会有所帮助。

# Install x86 brew
arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
alias ibrew=/usr/local/bin/brew

# Install Python 3.7
arch -x86_64 ibrew install python@3.7

# Add `python` executable (symlink to `python3`)
ln -s python3 "$(ibrew --prefix python@3.7)"/bin/python

# Symlink x86 Python 3.7 into pyenv
ln -s "$(ibrew --prefix python@3.7)" .pyenv/versions/3.7.10

# Check
pyenv local 3.7.10
python -V
# Python 3.7.10
python -c 'import _ctypes'. # works!

参考:https://github.com/pyenv/pyenv/issues/1768#issuecomment-871602950

【讨论】:

  • 这会在 Rosetta 下安装 Python,这对于 M1 Mac 上的许多用户来说可能并不理想。
  • 建议的脚本因“错误:无法以 Intel 默认前缀 (/usr/local) 安装在 ARM 处理器上的 Homebrew 中!”而失败,我必须使用 github.com/pyenv/pyenv/issues/1768#issuecomment-855523190 中的命令来获取它工作
猜你喜欢
  • 2021-09-01
  • 1970-01-01
  • 2021-01-07
  • 2023-03-03
  • 2019-11-07
  • 2015-01-17
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多