如何在默认 Python 2.7.3 的 Ubuntu 12.04 上隔离 Python 2.7.X?

如何在默认 Python 2.7.3 的 Ubuntu 12.04 上隔离 Python 2.7.X?

我想在我的 Ubuntu 12.04 机器上构建 Python 2.7.8,该机器默认发行版是 Python 2.7.3。我想“安装”Python 2.7.8,但将其与 Python 2.7.3 完全隔离 - 这意味着,我根本不想干扰发行版的默认 Python,包括通过 apt-get 或 PIP 安装的模块。

我想从源代码来做这件事,并且我不想使用虚拟环境——我宁愿在使用更复杂的工具之前学习以“困难”的方式去做这件事。

与该问题相关的第二个部分是,安装了 Python 2.7.8 之后,如何才能拥有两个不同的 PIP,默认将 Python 模块安装到 Python 2.7.3,而备用安装模块安装到 Python 2.7.8?

谢谢。

答案1

首先,为了确保一切从头开始,我采取了以下步骤:

  • 卸载软件包xlwt(用于测试),通过sudo apt-get uninstall python-xlwtpip uninstall xlwt
  • 通过以下方式卸载 PIPsudo apt-get uninstall python-pip
  • 通过以下方式创建干净的 Python 源目录 (~/src/Python2.7.8)make clean
  • 确保 pip 无法通过which pip(结果为零)

构建 Python 2.7.X 并确保仅为该特定安装配置 PIP

  • (假设已经下载并解压到主目录,例如~/src/Python2.7.8
  • 创建两个目录--prefix--exec-prefix配置选项,例如~/bld/python2.7.8_ind~/bld/python2.7.8_dep
  • 转到源目录(例如〜/ src / Python2.7.8)并输入

    ./configure --prefix=/home/uname/bld/python2.7.8_ind --exec-prefix=/home/uname/bld/python2.7.8_dep
    
  • 类型make && make install

此安装的二进制文件python(或二进制文件的符号链接)位于此示例中的/home/uname/bld/python2.7.8_dep/bin

这将创建一个(之前不存在的)目录bin~/bld/python2.7.8_ind并将用于此特定安装的 PIP 可执行文件放置在那里。PIP 软件包放置在~/bld/python2.7.8_ind/lib/python2.7/site-packages(之前为空,保存 README 文件)中。

现在,要将第一个包安装到这个特定的 python 安装中,

我验证了该目录~/bld/python2.7.8_ind/lib/python2.7/site-packages仅包含在 PIP 安装期间添加的包(pip、setuptools、easy_install)

  • 类型~/bld/python2.7.8_dep/bin/pip install xlwt

现在,该目录~/bld/python2.7.8_ind/lib/python2.7/site-packages包含一个新包(xlwt)。

现在当我输入

~/bld/python2.7.8_dep/bin/python
>>> import xlwt

它可以工作,并且输入pythonimport xlwt产生错误(正如预期的那样)。同时验证新安装的 Python 软件包搜索路径是否正确

~/bld/python2.7.8_dep/bin/python
>>> import site
>>> site.getsitepackages()

对于非新手来说,整个过程可能很明显,但我是新手,所以我把它全部写出来了。

答案2

将其安装到 /usr/local

./configure --prefix=/usr/local

相关内容