我想在我的 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-xlwt
和pip uninstall xlwt
- 通过以下方式卸载 PIP
sudo 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
- 使用此二进制文件安装 piphttps://bootstrap.pypa.io/get-pip.py通过输入
~/bld/python2.7.8_dep/bin/python get-pip.py
这将创建一个(之前不存在的)目录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
它可以工作,并且输入python
并import xlwt
产生错误(正如预期的那样)。同时验证新安装的 Python 软件包搜索路径是否正确
~/bld/python2.7.8_dep/bin/python
>>> import site
>>> site.getsitepackages()
对于非新手来说,整个过程可能很明显,但我是新手,所以我把它全部写出来了。
答案2
将其安装到 /usr/local
./configure --prefix=/usr/local