从头开始在Linux上构建Python 3.6.4

时间:2018-03-12 16:00:33

标签: python python-3.x lfs

我正在尝试从LFS 8.2-systemd构建Python 3.6.4,因此我运行configure命令:

./configure --prefix=/usr       \
            --enable-shared     \
            --with-system-expat \
            --with-system-ffi   \
            --with-ensurepip=yes

后跟make -j。 但是,此时Python找不到模块“pyexpat”,但该文件存在于/usr/lib/libexpat.so中。

阅读building Python from source with zlib support后,我创建了一个符号链接:

ln -s /usr/lib /usr/lib/x86_64-gnu-linux

如果我运行make install,则会收到错误消息:

  

ModuleNotFoundError:没有名为pyexpat的模块

我的expat lib版本是2.2.5

我在env -i chroot /mnt bash内进行编译 我的环境只包含有效的PATHLX_ALL=POSIX变量。

2 个答案:

答案 0 :(得分:1)

当我最初使用:

配置时,我遇到了python 3.6.8的同样问题
  

./ configure --prefix = / opt / python-3.6 / --enable-optimizations

但是,当我使用BLFS书中的命令重试时:

  

./ configure --prefix = / opt / python-3.6 / --enable-shared --with-system-expat --with-system-ffi --with-ensurepip = yes

我的pyexpat开始工作了。

话虽如此,我认为重试可能会有所帮助,因为我的第二个命令在功能上与你的相同。

答案 1 :(得分:-1)

sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

要使python3使用新安装的python 3.6而不是默认的3.5版本,请运行以下2条命令:

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 2

最后通过命令在python3的两个python版本之间切换:

sudo update-alternatives --config python3

选择版本3.6之后:

python3 -V