在Debian上安装第二个Python

16
我有一台Debian机器用于Django生产服务器。我需要安装第二个Python(2.7.1)以与virtualenv一起使用。但它总是写入我没有某些模块,然后我不得不手动搜索、apt-install并重新构建。是否有一种解决构建依赖关系的方法,或者为Debian Squeeze预编译的带有Python 2.7.1的.deb文件?如果这是一个初学者问题,我很抱歉,我已经查过资料了。
5个回答

21

获取Python 2.7.1源代码并手动编译:

configure --prefix=/path/to/python-2.7
make; make install

我建议在编译之前安装各种库:https://dev59.com/3G855IYBdhLWcg3w_5cQ#4047583 如果以后需要安装setuptools/pip,这将非常有帮助。 - maksimov
4
为什么不使用 make altinstall - timss

12

Python 2.7已经适用于 wheezy (测试版),您可以通过添加testing仓库并进行APT钉选来安装它。

1) 在/etc/apt/sources.list中添加仓库。

deb http://ftp.us.debian.org/debian testing main contrib non-free

2) 在/etc/apt/preferences中进行实际的固定版本操作。

Package: *
Pin: release n=testing
Pin-Priority: 100

Pin-Priority值低于500基本上意味着不会自动安装来自testing的软件包,因此您不会遇到其他软件包的问题。

3)从testing中安装python2.7

aptitude -t testing install python2.7

(or apt-get if you don't have aptitude)


12
出于多种原因,不应该这样做。不应混合使用来自不同Debian版本的软件包。测试/不稳定分支正在努力将Wheezy版本的默认python版本更改为2.7。Squeeze版本旨在使用2.6,因此如果你用2.7替换它,则可能会破坏系统中所有使用python的东西。 - Arrowmaster
@Arrowmaster:我宁愿说这是不支持的,也不愿说这不应该被做。如果它坏了,你就可以留下两个碎片了。 - StackExchange saddens dancek
2
正确,但更容易告诉不知道如何开始修复它的人,它就不应该这样做。 - Arrowmaster
你能详细说明一下,如果不使用update-alternatives将默认的Python更改为2.7会有什么危险吗?据我所知,当固定版本时,Python2.7只是作为一个额外的软件包存在,它不会改变默认的Python。我在这里漏掉了什么吗? - jorelli
10
我按照这些指示在我的Debian Squeeze上安装了Python 2.7,并使用update-alternatives进行配置,但正如Arrowmaster所警告的那样,它出现了问题!下一个apt-get update更新时出现了Python错误;类似于python不是debian_default。我切换回Python 2.6,但仍然有相同的错误?!最终我不得不卸载2.7并修改/usr/bin/python链接才能使其再次工作。 - Nostradamnit
显示剩余2条评论

9

以下是针对Debian GNU/Linux 6.0.7(于2013年7月18日发布)的两个方法:

经典方法

安装所需依赖项

aptitude -y install build-essential python-pip libmysqlclient-dev libadns1-dev \
 python-dev libreadline-dev libgdbm-dev zlib1g-dev libsqlite3-dev \
 libssl-dev libbz2-dev libncurses5-dev libdb-dev 

下载Python

cd /tmp
wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tar.xz
unxz -c Python*xz | tar xpf -

编译
cd Python*
./configure  --prefix=/opt/python2.7.5 --enable-shared
make

安装

make install
echo "/opt/python2.7.5/lib" >  /etc/ld.so.conf.d/libpython2.7.conf
ldconfig

测试

/opt/python2.7.5/bin/python -c "print('Ok')" 

升级pip和virtualenv

easy_install pip
pip -v install --upgrade distribute==0.7.3
pip -v install --upgrade virtualenv==1.9.1

创建用户及其虚拟环境
adduser user_app --home /opt/user_app
su user_app
virtualenv --no-site-packages --verbose -p /opt/python2.7.5/bin/python $HOME

再次测试

su user_app
cd 
source bin/activate
python -c "import sys; print sys.version"

Pythonic的特点

使用pyenv软件包。

 pyenv install 2.7.5

我认为我会跳过将自定义Python安装添加到ld.so.conf缓存中。我的方法是创建一个“包装脚本”(/usr/local/bin/python2.7),它将:export LD_LIBRARY_PATH = opt / python2.x.x / lib,然后调用/opt/python-2.x.x / bin / python "$@"等。这至少保持了一切隔离。 - David Goodwin

2

使用debootstrap安装chroot环境也是一种快速且安全的解决方案。它大约使用300MB。

debootstrap wheezy /opt/debian7
chroot /opt/debian7
apt-get install python2.7

0

您可以使用pythonbrew安装和切换Python版本。我在Debian 6和Debian 7中安装了Python 2.7.3和Python 2.7.9,运行良好。

您可以参考此教程pythonbrew howto


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接