【问题标题】:Installing second python on Debian在 Debian 上安装第二个 python
【发布时间】:2011-05-06 05:58:08
【问题描述】:

所以我有 Debian 机器用于我的 Django 生产服务器。 我需要安装第二个 python (2.7.1) 才能与 virtualenv 一起使用。 但它总是写我没有一些模块,然后我必须手动搜索,安装它们并重建。有没有办法解决构建的依赖关系,或者使用 python 2.7.1 为 Debian Squeeze 预编译 .deb? 抱歉,如果这是一个菜鸟问题,老实说,我用谷歌搜索了。

【问题讨论】:

    标签: python debian virtualenv


    【解决方案1】:

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

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

    【讨论】:

    • 我还建议在编译之前安装各种库:stackoverflow.com/a/4047583/211197 如果以后需要安装 setuptools/pip 这将很有帮助。
    • 为什么不make altinstall
    【解决方案2】:

    Python 2.7 is available for wheezy (testing),因此您应该可以通过添加testing 存储库并执行一些APT pinning 来安装它。

    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
    

    (或apt-get,如果你没有aptitude

    【讨论】:

    • 由于多种原因不应该这样做。来自不同 Debian 发行版的软件包不应混用。测试/不稳定分支正在努力将 Wheezy 版本的默认 python 版本更改为 2.7。 Squeeze 建议使用 2.6,因此如果将其替换为 2.7,则可能会破坏使用 python 的系统上的所有内容。
    • @Arrowmaster:我宁愿说这是不受支持的,而不是不应该这样做。 如果它坏了,你可以保留两块。
    • 对,但是告诉那些不知道从哪里开始修复它的人不应该这样做会更容易。
    • 您能否详细说明如果您不使用 update-alternatives 将默认 python 更改为 2.7 会有多危险?据我了解,python2.7 在固定时只是作为附加包存在;它不会改变默认的python。我在这里错过了什么吗?
    • 我根据这些说明在我的 Debian Squeeze 上安装了 python 2.7,并使用 update-alternatives 进行了配置,正如 Arrowmaster 警告的那样,它确实坏了!下一个 apt-get update 出现 python 错误;像 python 这样的东西不是 debian_default。我切换回 python 2.6 但仍然有同样的错误?!?我最终不得不卸载 2.7 并破解 /usr/bin/python 链接以使其再次工作。
    【解决方案3】:

    这是 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):导出 LD_LIBRARY_PATH=opt/python2.x.x/lib 然后调用 /opt/python-2.x.x/bin/ python "$@" 等。这至少使一切保持隔离。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      您可以使用 pythonbrew 安装和切换 python 版本 我在 Debian 6 和 Debian 7 中安装了 python 2.7.3 和 python 2.7.9 并且工作正常。 你可以跟着这个教程pythonbrew howto

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 2013-11-03
        • 2021-12-19
        • 2014-06-12
        • 2015-02-05
        • 2015-06-14
        相关资源
        最近更新 更多