python - pyenv install : 3. x BUILD FAILED (Ubuntu 20.04 using python-build 20180424)

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

尝试安装新的 Python - 带有 pyenv 的版本在 Ubuntu 20.04 WSL for Windows 10失败并显示以下输出:

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

最佳答案

这些是日志的相关部分:

[...]
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
然后再试一次。

关于python - pyenv install : 3. x BUILD FAILED (Ubuntu 20.04 using python-build 20180424),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67807596/

相关文章:

python - Python autodoc 元组/列表格式可以更改吗?

python - 如何使用 Beaker 将值保存到 Pyramid 中基于匿名 cookie 的 session

java - 进程构建器参数

macos - 通过 Homebrew 安装的 MongoDB 无法正常工作

python - python中的Np随机采样

python - 抓取以 [some text] 开头的 json 对象

Python 子进程调用在写入文件时抛出错误

c++ - 执行 OpenGL 程序时出现 libGL 错误

bash - 无法在 macOS 上修改/etc/shells 以包含 brew 安装的 bash 版本

variables - 将 Homebrew 程序添加到 PATH