我正在尝试按照 python 开发人员指南在 Ubuntu 12.04 上设置 CPython 的编译版本。 即使安装了依赖包lzma和sqlite3后,构建仍失败,表明未找到依赖模块。 确切错误:
*Python 构建已完成,但未找到构建这些模块所需的位:
_lzma _sqlite3 _tkinter
要查找必要的位,请在 detector_modules() 中的 setup.py 中查找模块名称。*
我找不到 tkinter 包。感谢任何帮助。
在我的 Ubuntu Precise 盒子上安装以下软件包后,我能够构建
Python 3.3
而无需修改 setup.py
。
build-essential
zlib1g-dev
libbz2-dev
libncurses5-dev
libreadline6-dev
libsqlite3-dev
libssl-dev
libgdbm-dev
liblzma-dev
tk8.5-dev
一般来说,请参阅 Python 开发人员指南 了解依赖关系。那里写着:
“如果您想构建所有可选模块,请安装以下软件包及其依赖项”:
sudo apt-get install build-essential gdb lcov pkg-config \
libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \
libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \
lzma lzma-dev tk-dev uuid-dev zlib1g-dev
找不到 lzma 和 sqlite3 可能是因为您的路径(特别是 LD_LIBRARY_PATH)不正确。你是如何安装这两个包的?你用过包管理器吗?如果您手动安装,那么它们安装在哪里?另外,如果您使用包管理器安装lzma和sqlite3,您是否安装了development版本?从源代码安装时,您将需要开发版本,以便 Python 源代码可以找到必要的包含文件。
此外,您可能需要编辑
setup.py
以指示可以在哪里找到这些包。
至于 tkinter:这依赖于 tcl/tk,因此如果您从源代码安装 python/tkinter,请检查您是否安装了这些软件包的开发版本。
这对我有用(Python 3.4,Ubuntu 13.04),意味着“make”干净地完成:
sudo apt-get install build-essential python-dev libncurses*-dev \
liblzma-dev libgdbm-dev libsqlite3-dev \
libbz2-dev tk-dev
安装:
cd python3.4
make clean && ./configure && make && sudo make install
我使用了这里的说明: python-on-debian-wheezy
但是我还必须安装 tk-dev,它没有在那里列出。
在 2021 年的 Ubuntu 20.04 上遇到了一些困难(以防有人来到这里寻找更新的指令集)。发现这篇文章非常有用:
https://linoxy.com/ubuntu-how-to/install-python-3-9-on-ubuntu-20-04-lts/
在 Ubuntu 上,您可以使用
apt
安装依赖项,因此只需知道哪个即可。我使用的构建命令如下:
# Update repo, very important on fresh server install
apt update
# Install dependencies
apt install gcc build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev
# Configure with optimizations
./configure --enable-optimizations
make -j 4 # 4 cores
make test # Shows you anything you missed
# https://docs.python.org/3/using/unix.html#building-python
make altinstall
我选择不安装
sqlite
或tkinter
,因为我不需要它们,但过程是一样的。只需包含@simp76 的答案中找到的依赖项即可。
我刚刚在 DO Droplet 上全新安装的 Ubuntu 20.04 上运行了此过程,并且运行完美。
做了
`sudo apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev tk-dev``