python - 将默认 python 安装从 2.6 迁移到 2.7 : problems with easy_install

标签 python debian easy-install

我正在使用 debian,默认安装的 python 为 2.6 我想迁移到 python 2.7,包括安装 easy_install。 我按照别人的指示删除了我的/usr/bin/python,然后链接

ln -s /usr/bin/python2.7 /usr/bin/python

我下载了最新版本的setuptools

并cd'ed到文件中。安装帮助要求我将其作为 shell 程序运行,我照做了,但出现以下错误:

sh setuptools-0.6c11-py2.7.egg
Traceback (most recent call last):
    File "<string>", line 1 in <module>
ImportError: No Module named setuptools.command.easy_install

我感觉我安装的 easy_install 与我运行的 python 版本有关,但我不太明白。我还尝试下载 .tar.gz 文件,cd-ing 到目录中,然后运行

python setup.py build; setup.py install

运行后,我可以使用 easy_install,但出现以下错误:

Traceback (most recent call last):
  File "/usr/local/bin/easy_install", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No Module named pkg_resources

谁能给我一个解决方案?谢谢您的帮助。

最佳答案

替换系统 Python 不是一个好主意。向上移动一个点释放 可能不会破坏您的系统,但谁愿意冒这个险呢?安装中 使用 easy_install 将库添加到系统 Python 也会导致问题 如果它们相互冲突。

另一种方法是从源代码构建 Python,将其安装到您的家中 目录,并使用 virtualenv 创建隔离的环境,您可以在其中 使用 pip(这是 更现代的等同于 easy_install)。

对于 Python 2.7,如果你想要标准的一些“可选”部分 库,这意味着还要构建其他一些东西。这是一个脚本 (主要是从散布在互联网上的博客文章中拼凑而成) 在 Debian“Squeeze”上为我工作(在撰写本文时稳定):

#!/bin/bash -e

# Setup
sudo aptitude install build-essential
mkdir -p ${HOME}/.local
mkdir build-python
cd build-python

# Get sources

### Tcl/Tk <http://www.tcl.tk/software/tcltk/download.html>
wget "http://downloads.sourceforge.net/project/tcl/Tcl/8.5.13/tcl8.5.13-src.tar.gz"
wget "http://downloads.sourceforge.net/project/tcl/Tcl/8.5.13/tk8.5.13-src.tar.gz"

### Berkeley DB <http://www.oracle.com/technetwork/products/berkeleydb/downloads/index-082944.html>
wget "http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz"

### Python <http://www.python.org/download/>
wget "http://www.python.org/ftp/python/2.7.3/Python-2.7.3.tgz"

# Build Tcl
tar xzf tcl8.5.13-src.tar.gz
cd tcl8.5.13/unix
./configure --prefix=${HOME}/.local
make
make install
cd ../..

# Build Tk
tar xzf tk8.5.13-src.tar.gz
cd tk8.5.13/unix
./configure --prefix=${HOME}/.local
make
make install
cd ../..

# Build Berkeley DB 4.8
tar xzf db-4.8.30.tar.gz
cd db-4.8.30/build_unix
../dist/configure --prefix=${HOME}/.local/opt/BerkeleyDB.4.8 --enable-tcl --with-tcl=${HOME}/.local/lib
make
make install
cd ../..

# Set compile flags
export LDFLAGS="-L${HOME}/.local/lib -L${HOME}/.local/opt/BerkeleyDB.4.8/lib"
export CPPFLAGS="-I${HOME}/.local/include -I${HOME}/.local/opt/BerkeleyDB.4.8/include"
export CXXFLAGS=${CPPFLAGS}
export CFLAGS=${CPPFLAGS}
export LD_LIBRARY_PATH=${HOME}/.local/lib:${HOME}/.local/opt/BerkeleyDB.4.8/lib
export LD_RUN_PATH=${LD_LIBRARY_PATH}

# Build Python 2.7
tar xzf Python-2.7.3.tgz
cd Python-2.7.3
./configure --prefix=${HOME}/.local
make
make altinstall
cd ..

# Install virtualenv, pip and virtualenvwrapper
curl http://python-distribute.org/distribute_setup.py | ${HOME}/.local/bin/python2.7
curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | ${HOME}/.local/bin/python2.7
${HOME}/.local/bin/pip install virtualenvwrapper

# Update ~/.bashrc
echo 'export PATH="${HOME}/.local/bin:${PATH}"' >> ${HOME}/.bashrc
echo 'export WORKON_HOME="${HOME}/.local/virtualenv"' >> ${HOME}/.bashrc
echo 'export VIRTUALENVWRAPPER_PYTHON="${HOME}/.local/bin/python2.7"' >> ${HOME}/.bashrc
echo 'export VIRTUALENVWRAPPER_VIRTUALENV="${HOME}/.local/bin/virtualenv"' >> ${HOME}/.bashrc
echo 'export VIRTUALENVWRAPPER_VIRTUALENV_ARGS="--python=python2.7"' >> ${HOME}/.bashrc
echo 'source ${HOME}/.local/bin/virtualenvwrapper.sh' >> ${HOME}/.bashrc

# Finish ...
cd ..
echo -e "\n\n ... Done!"

此脚本会询问您的密码以便安装 GCC 等(如果需要),然后需要一些时间来构建所有内容 - 在我的(古老的)上大约需要 25 分钟 机器和(糟糕的)互联网连接。如果你注意,在某些时候 点你会看到以下消息滚动过去:

Python build finished, but the necessary bits to build these modules were not found:
bsddb185           dl                 imageop         
sunaudiodev                                           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

这四个模块已经过时和/或已弃用,因此您无需担心 关于他们。如果消息提到任何其他模块,则意味着一些 您的系统上未安装必要的库。如果是这种情况,您仍然可以运行 Python,但无法导入这些模块。如果您受到此影响,请在评论中大声喊叫,以及 我会相应地更新脚本。

成功完成后,您需要获取您的.bashrc:

$ source ~/.bashrc

... 然后您就可以运行新编译的 Python ...

$ python2.7
Python 2.7.3 (default, Nov 17 2012, 02:00:26) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

...创建一个 virtualenv 以在 ...

$ mkvirtualenv my_env
$ python
Python 2.7.3 (default, Nov 17 2012, 02:00:26) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

...将库安装到其中...

$ pip install beautifulsoup4

...等等。

退出虚拟环境:

$ deactivate

稍后重新输入:

$ workon my_env

有关更多信息,请查看 pip 的文档和 virtualenvwrapper .

关于python - 将默认 python 安装从 2.6 迁移到 2.7 : problems with easy_install,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13426872/

相关文章:

python - Python 标准库中容器的命名约定

python - mod_python 无法看到我的 Django 项目设置文件

python - Django查询模板中的manytomanyfield

python - 嵌套 IF/ELSE 和 ELIF 之间的区别?

python - easy_install 在 Mac 上损坏

python - setuptools/easy_install 不安装 *.cfg 文件和语言环境目录?

linux - 在 debian 上使用 npm 安装 Node 包失败

linux - 在子目录中时如何从终端在 Linux 根目录中创建目录?

mysql - 错误 2002 (HY000) : Can't connect to local MySQL server through socket

python - python 中没有日期时间模块如何通过 easy_install 安装?