我如何从Ubuntu上的源代码自己构建python?

Bri*_*itz 34 python linux ubuntu

Ubuntu预装了Python 2.7.2+.(我也下载了python开发包.)由于我遇到的另一个问题(如何更新/更新Apache使用的expat库的版本?),Graham Dumpleton告诉我我的发行版已经明确了以一种使用外部pyexpat实现的方式构建Python,因此导致我的问题.他还说我可以自己从源代码构建Python来解决这个问题.我如何在Ubuntu上执行此操作?(请记住,我是Linux的新手.)

Nou*_*him 46

  1. 在shell提示符下(在终端中),运行

    sudo apt-get install build-essential 
    
    Run Code Online (Sandbox Code Playgroud)

    这将获取构建任何内容所需的所有常见包(例如编译器等).

  2. 然后跑

    sudo apt-get build-dep python2.7
    
    Run Code Online (Sandbox Code Playgroud)

    这将获取构建python所需的所有库.

  3. 然后下载python的源代码并将其解压缩到一个目录中.

  4. 去那儿跑

    ./configure --prefix=/path/where/you/want/python/installed
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后make然后make install构建并安装它:

    make && make install
    
    Run Code Online (Sandbox Code Playgroud)

如果你在途中遇到障碍,请回到这里,我会尝试提供一些指导.

  • Brian:您可能需要在`sources.list`中添加`deb-src`行和`deb`行. (3认同)
  • 当我运行`sudo apt-get build-dep python2.7`时,它说"E:你必须在sources.list中放入一些'源'URI".任何的想法?(另外,小方注意:我认为你的意思是在第一个命令的"essentials"末尾没有-s编写`sudo apt-get install build-essential`.) (2认同)
  • 在构建Python时,他们还需要--enable-shared选项,因为他们希望将它与mod_wsgi一起使用,而Python默认不构建共享库,这对于动态加载嵌入式系统并不理想. (2认同)
  • 我认为最好 altinstall 而不是安装 https://docs.python.org/3/using/unix.html#building-python (2认同)

Sum*_*nal 32

构建"热门的"最新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
Run Code Online (Sandbox Code Playgroud)

它从github上的源代码构建了最近的python.

有了这个,我已经建成了Python 3.8.0a0 (heads/master:077059e0f0, Aug 10 2018, 21:36:32).

  • 我将运行sudo make altinstall,因此您不会覆盖系统默认的python3版本。例如,如果在Ubuntu 18.04上执行make install,则会覆盖/ usr / bin / python3 (3认同)

fun*_*ure 6

您可以尝试使用pyenv.我还没有尝试过.但是看看这些消息来源,在任何*ix系统上完成任何CPython解释器的安装似乎非常成熟.