2011-11-11 17 views
18

Ubuntu预装了Python 2.7.2+。 (我也下载了python开发包)。由于我遇到了另一个问题(在极深的How do I replace/update the version of the expat library used by Apache?中进行了解释),Graham Dumpleton告诉我,我的发行版已经明确地构建了Python,以便使用外部pyexpat实现,所以导致我的问题。他还表示,我可以从源代码自己构建Python来解决问题。我将如何在Ubuntu上执行此操作? (请记住我是新来的Linux。)我如何从Ubuntu的源代码构建python?

+0

如果你在这里没有得到答案,这个问题可能会在更多的Ubuntu的人看到askubuntu.com –

+1

这不是真的特定于Ubuntu的,所以我认为这里很好。我认为各种堆栈交换站点有相当大的重叠。 –

回答

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

    sudo apt-get install build-essential 
    

    这将获取所有你需要建立什么共同包(例如编译器等)。

  2. 然后运行

    sudo apt-get build-dep python2.7 
    

    这将获取你需要建立蟒蛇的所有库。

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

  4. 去那里和运行

    ./configure --prefix=/path/where/you/want/python/installed 
    
  5. 然后make然后make install得到它建造和安装:

    make && make install 
    

如果碰到在路上碰壁,请回到这里我会尽力提供一些指导。

+1

当我运行'sudo apt-get build-dep python2.7'时,它说“E:你必须在你的sources.list中放置一些”源代码“URI。任何想法? (另外,小方面说明:我认为你的意思是在第一个命令中写入'sudo apt-get install build-essential',而不在“essentials”的末尾加上-s。) –

+2

在构建Python时,他们还需要--enable-shared选项,因为他们希望将它与mod_wsgi一起使用,并且Python不会默认构建共享库,这对于动态加载嵌入式系统并不理想。 –

+0

什么是“他们”?你指的是什么?此外,在此之前,我该如何解决错误信息?我需要添加东西到sources.list? –

2

您自己构建Python的高级解决方案是pythonbrew,它可以自动执行此过程,并且不仅可以安装多个不同的版本,还可以轻松地在它们之间进行选择。

2016年,pyenv和PyRun是最可行的解决方案。

+2

+1的工具。它有多成熟?你有亲身经历吗? –

+0

@NoufalIbrahim:我使用['pythonz'](https://github.com/saghul/pythonz)('pythonbrew'的简化分支)。它的工作原理如下:它自动执行下载源代码并手动构建它们的过程。 – jfs

+2

该工具不再维护。 –

4

您可以尝试使用pyenv。我还没有尝试过。但从源头上看,在任何* ix系统上安装任何CPython解释器似乎都非常成熟。

6

建设“热”非常最近的Python(从GitHub)的最佳方法是如下:

sudo apt-get update \ 
    && 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-amd64 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 \ 
    && make install 

它建立从GitHub上的来源非常最近的蟒蛇。

有了这个我建了Python 3.7.0a0 (heads/master:60a6632a3d, Aug 5 2017)