【问题标题】:pyenv install: 3.x BUILD FAILED (Ubuntu 20.04 using python-build 20180424)pyenv install: 3.x BUILD FAILED (Ubuntu 20.04 using python-build 20180424)
【发布时间】:2021-06-02 14:56:04
【问题描述】:

尝试在Ubuntu 20.04 WSL for Windows 10 上安装带有pyenv 的新Python 版本失败,输出如下:

username@hd1pcms0347:~$ pyenv install 3.9.4
Downloading Python-3.9.4.tar.xz...
-> https://www.python.org/ftp/python/3.9.4/Python-3.9.4.tar.xz
Installing Python-3.9.4...
python-build: use readline from homebrew

BUILD FAILED (Ubuntu 20.04 using python-build 20180424)

Inspect or clean up the working tree at /tmp/python-build.20210602162502.2268
Results logged to /tmp/python-build.20210602162502.2268.log

Last 10 log lines:
  File "/tmp/python-build.20210602162502.2268/Python-3.9.4/Lib/ensurepip/__init__.py", line 210, in _main
    return _bootstrap(
  File "/tmp/python-build.20210602162502.2268/Python-3.9.4/Lib/ensurepip/__init__.py", line 129, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/tmp/python-build.20210602162502.2268/Python-3.9.4/Lib/ensurepip/__init__.py", line 38, in _run_pip
    return subprocess.run([sys.executable, "-c", code], check=True).returncode
  File "/tmp/python-build.20210602162502.2268/Python-3.9.4/Lib/subprocess.py", line 528, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['/tmp/python-build.20210602162502.2268/Python-3.9.4/python', '-c', '\nimport runpy\nimport sys\nsys.path = [\'/tmp/tmp7aa5f7ml/setuptools-49.2.1-py3-none-any.whl\', \'/tmp/tmp7aa5f7ml/pip-20.2.3-py2.py3-none-any.whl\'] + sys.path\nsys.argv[1:] = [\'install\', \'--no-cache-dir\', \'--no-index\', \'--find-links\', \'/tmp/tmp7aa5f7ml\', \'--root\', \'/\', \'--upgrade\', \'setuptools\', \'pip\']\nrunpy.run_module("pip", run_name="__main__", alter_sys=True)\n']' returned non-zero exit status 1.
make: *** [Makefile:1255: install] Error 1

整个日志文件可以在下面的 GoogleDrive-Link 下看到(因为在 StackOverflow 中仍然只能共享图片):

https://drive.google.com/file/d/1MKfRPy5-PWOGMW7ui-OaZiSmSopZV4hh/view?usp=sharing

【问题讨论】:

    标签: python ubuntu homebrew windows-subsystem-for-linux pyenv


    【解决方案1】:

    这些是您日志的相关部分:

    [...]
    In file included from /tmp/python-build.20210602162502.2268/Python-3.9.4/Modules/_cursesmodule.c:113:
    ./Include/py_curses.h:36:10: fatal error: curses.h: No such file or directory
       36 | #include <curses.h>
          |          ^~~~~~~~~~
    compilation terminated.
    [...]
    /tmp/python-build.20210602162502.2268/Python-3.9.4/Modules/_ctypes/_ctypes.c:107:10: fatal error: ffi.h: No such file or directory
      107 | #include <ffi.h>
          |          ^~~~~~~
    compilation terminated.
    
    Python build finished successfully!
    The necessary bits to build these optional modules were not found:
    _bz2                  _curses_panel         _dbm
    _gdbm                 _lzma                 _sqlite3
    _tkinter              _uuid                 zlib
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    
    
    The following modules found by detect_modules() in setup.py, have been
    built by the Makefile instead, as configured by the Setup files:
    _abc                  atexit                pwd
    time
    
    
    Failed to build these modules:
    _ctypes               _curses
    [...]
    Traceback (most recent call last):
      File "<frozen zipimport>", line 520, in _get_decompress_func
    ModuleNotFoundError: No module named 'zlib'
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<frozen zipimport>", line 568, in _get_data
      File "<frozen zipimport>", line 523, in _get_decompress_func
    zipimport.ZipImportError: can't decompress data; zlib not available
    [...]
    

    您似乎缺少dependencies that PyEnv requires for building Python。由于您使用的是 Ubuntu,请运行以下命令:

    sudo apt update
    sudo apt install \
        build-essential \
        curl \
        libbz2-dev \
        libffi-dev \
        liblzma-dev \
        libncursesw5-dev \
        libreadline-dev \
        libsqlite3-dev \
        libssl-dev \
        libxml2-dev \
        libxmlsec1-dev \
        llvm \
        make \
        tk-dev \
        wget \
        xz-utils \
        zlib1g-dev
    

    然后再试一次。

    【讨论】:

    • 感谢您的提示。顺便说一句,zlib 不能像你说的那样安装,它会抛出E: Unable to locate package zlib。解决方案:sudo apt install zlib1g zlib1g-dev(见:systutorials.com/how-to-install-the-zlib-library-in-ubuntu
    • 现在,安装成功了,除了 2 个警告:1. WARNING: The Python bz2 extension was not compiled. 2. Missing the bzip2 lib? WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib? 我检查了,bzip2 已经安装,但 sqlite 没有。
    猜你喜欢
    • 2021-03-23
    • 1970-01-01
    • 2019-01-04
    • 2014-03-03
    • 1970-01-01
    • 2016-09-10
    • 2020-08-20
    • 2022-07-30
    • 1970-01-01
    相关资源
    最近更新 更多