问题描述
Ubuntu预先安装了Python 2.7.2+。 (我还下载了python dev软件包。)由于我遇到的另一个问题(在How do I replace/update the version of the expat library used by Apache?中进行了深入解释),Graham Dumpleton告诉我,我的发行版已显式构建Python以使用外部pyexpat实现的方式,因此导致了问题。他还说,我可以自己用源代码构建Python来解决问题。我将如何在Ubuntu上执行此操作? (请记住,我是Linux的新手。)
最佳方法
-
在shell提示符下(在终端中),运行
sudo apt-get install build-essential
这将获取构建任何东西所需的所有常用软件包(例如编译器等)。
-
然后跑
sudo apt-get build-dep python2.7
这将获取构建python所需的所有库。
-
然后下载python的源代码并将其解压缩到目录中。
-
去那里跑
./configure --prefix=/path/where/you/want/python/installed
-
然后依次安装
make
和make install
以进行构建和安装:make && make install
如果您在途中遇到障碍,请在此处询问,我将尝试提供一些指导。
次佳方法
生成”hot”最新python(来自github)的最佳方法如下:
sudo apt-get update \
&& sudo apt-get install -y build-essential git libexpat1-dev libssl-dev zlib1g-dev \
libncurses5-dev libbz2-dev liblzma-dev \
libsqlite3-dev libffi-dev tcl-dev linux-headers-generic libgdbm-dev \
libreadline-dev tk tk-dev
git clone https://github.com/python/cpython.git
cd cpython && ./configure --prefix=/usr \
--enable-loadable-sqlite-extensions \
--enable-shared \
--with-lto \
--enable-optimizations \
--with-system-expat \
--with-system-ffi \
--enable-ipv6 --with-threads --with-pydebug --disable-rpath \
&& make \
&& sudo make install
它从github上的源代码构建了最新的python。
以此构建了Python 3.8.0a0 (heads/master:077059e0f0, Aug 10 2018, 21:36:32)
。
第三种方法
您可以尝试使用pyenv。我还没有尝试过。但是从源头来看,在任何* ix-system上完成任何CPython-interpreter的安装似乎已经非常成熟。
第四种方法
自行构建Python的高级解决方案是pythonbrew,它可以自动执行该过程,并且不仅允许您安装多个不同的版本,还可以轻松地在它们之间进行选择。
在2016年,pyenv和PyRun是最可行的解决方案。