简体   繁体   English

无法在 Python 3.10 上安装 numba

[英]Can't install numba on Python 3.10

Python 3.10 on Mac running OS 11.6.1运行 OS 11.6.1 的 Mac 上的 Python 3.10

I uninstalled Python 3.9 from my machine and upgraded to version 3.10.我从我的机器上卸载了 Python 3.9 并升级到版本 3.10。 No problems installing standard packages such as pandas, scipy, etc. However one package, epycom, requires numba.安装 pandas、scipy 等标准软件包没有问题。但是,一个 package,epycom,需要 numba。

When I enter pip3 install numba , I receive the lengthy error message below with the key phrase FileNotFoundError: [Errno 2] No such file or directory: 'llvm-config'当我输入pip3 install numba时,我收到下面的冗长错误消息,其中包含关键短语FileNotFoundError: [Errno 2] No such file or directory: 'llvm-config'

Wondering if I should uninstall 3.10 and go back to 3.9?想知道我是否应该将 3.10 和 go 卸载回 3.9?

Collecting numba
  Using cached numba-0.51.2.tar.gz (2.1 MB)
  Preparing metadata (setup.py) ... done
Collecting llvmlite<0.35,>=0.34.0.dev0
  Using cached llvmlite-0.34.0.tar.gz (107 kB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: numpy>=1.15 in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from numba) (1.22.0)
Requirement already satisfied: setuptools in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from numba) (58.1.0)
Using legacy 'setup.py install' for numba, since package 'wheel' is not installed.
Using legacy 'setup.py install' for llvmlite, since package 'wheel' is not installed.
Installing collected packages: llvmlite, numba
    Running setup.py install for llvmlite ... error
    ERROR: Command errored out with exit status 1:
     command: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/setup.py'"'"'; __file__='"'"'/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-record-6u_7985j/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10/llvmlite
         cwd: /private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/
    Complete output (29 lines):
    running install
    running build
    got version from file /private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/llvmlite/_version.py {'version': '0.34.0', 'full': 'c5889c9e98c6b19d5d85ebdd982d64a03931f8e2'}
    running build_ext
    /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 /private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/ffi/build.py
    LLVM version... Traceback (most recent call last):
      File "/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/ffi/build.py", line 105, in main_posix
        out = subprocess.check_output([llvm_config, '--version'])
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 420, in check_output
        return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 501, in run
        with Popen(*popenargs, **kwargs) as process:
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 966, in __init__
        self._execute_child(args, executable, preexec_fn, close_fds,
      File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/subprocess.py", line 1842, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    FileNotFoundError: [Errno 2] No such file or directory: 'llvm-config'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/ffi/build.py", line 191, in <module>
        main()
      File "/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/ffi/build.py", line 185, in main
        main_posix('osx', '.dylib')
      File "/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/ffi/build.py", line 107, in main_posix
        raise RuntimeError("%s failed executing, please point LLVM_CONFIG "
    RuntimeError: llvm-config failed executing, please point LLVM_CONFIG to the path for llvm-config
    error: command '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10' failed with exit code 1
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/setup.py'"'"'; __file__='"'"'/private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-install-42hw6q4a/llvmlite_a0abee749e71467a998628e47a3a1a24/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/var/folders/6j/xqx91xb15wl81pcnf33255bct7pzn4/T/pip-record-6u_7985j/install-record.txt --single-version-externally-managed --compile --install-headers /Library/Frameworks/Python.framework/Versions/3.10/include/python3.10/llvmlite Check the logs for full command output.
fishbacp@fishbacpK0ML85 ~ % pip3 install llvm
ERROR: Could not find a version that satisfies the requirement llvm (from versions: none)
ERROR: No matching distribution found for llvm

Based on the historical issues submited on Github numba is slow in adoption of a new Python version;根据 Github 提交的历史问题,numba 采用新的 Python 版本的速度很慢; my guess would be that it currently does not support Python 3.10.我的猜测是它目前不支持 Python 3.10。

Reference:参考:

https://github.com/numba/llvmlite/issues/621 https://github.com/numba/llvmlite/issues/621

https://github.com/numba/llvmlite/issues/531 https://github.com/numba/llvmlite/issues/531

Directly taken from the llvmlite documentation ;直接取自llvmlite 文档

How this ends up being a problem.这最终如何成为一个问题。

If you are on an unsupported architecture (ie not x86*) or unsupported Python version for binary wheels (eg Python alphas) then pip will try and build Numba from sdist which in turn will try and build llvmlite from sdist. If you are on an unsupported architecture (ie not x86*) or unsupported Python version for binary wheels (eg Python alphas) then pip will try and build Numba from sdist which in turn will try and build llvmlite from sdist. This will inevitably fail as the llvmlite source distribution needs an appropriate LLVM installation to build.这将不可避免地失败,因为 llvmlite 源代码分发需要适当的 LLVM 安装才能构建。

If you are using pip < 19.0 then manylinux2010 wheels will not install and you end up in the situation in 1. ie something unsupported so building from sdist.如果您使用的是 pip < 19.0,那么 manylinux2010 轮子将无法安装,您最终会遇到 1. 中的情况,即从 sdist 构建不受支持的东西。

Historically, this issues has manifested itself as the following error message, which included here verbatim for future reference:从历史上看,此问题已表现为以下错误消息,此处逐字包含以供将来参考:

FileNotFoundError: [Errno 2] No such file or directory: 'llvm-config'

Things to “fix” it… “修复”它的事情......

If you are using pip < 19.0 and on x86*, then update it if you can, this will let you use the manylinux2010 binary wheels.如果您使用的是 pip < 19.0 并且在 x86* 上,请尽可能更新它,这将让您使用 manylinux2010 二进制轮子。

If you are on an unsupported architecture, for example Raspberry Pi, please use conda if you have that available.如果您使用的是不受支持的架构,例如 Raspberry Pi,请使用 conda(如果有)。

Otherwise: you will probably need to build from source, this means providing an LLVM.否则:您可能需要从源代码构建,这意味着提供 LLVM。 If you have conda available you could use this to bootstrap the installation with a working llvm/llvmdev package.如果您有可用的 conda,您可以使用它来引导安装,并使用工作的 llvm/llvmdev package。 Learn more about compiling from source in the section on Building manually below.在下面的手动构建部分中了解有关从源代码编译的更多信息。 and in particular note the use of the LLVM_CONFIG environment variable for specifying where your LLVM install is.并特别注意使用 LLVM_CONFIG 环境变量来指定您的 LLVM 安装位置。

Someone has already pointed out numba's LLVM-config issue.有人已经指出了 numba 的 LLVM-config 问题。 According to the GitHub links, I would try downgrading LLVM, as the GitHub link states LLVM 9 isn't supported yet.根据 GitHub 链接,我会尝试降级 LLVM,因为 GitHub 链接状态 LLVM 9 尚不支持。 I may be incorrect, and hope this helps!我可能是不正确的,希望这有帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM