4

デフォルトの python インストール 2.6 で debian を使用しています。easy_install のインストールを含め、python 2.7 に移行したいと考えていました。/usr/bin/python を削除するという他の誰かの指示に従い、次にリンクします

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

setuptoolsの最新バージョンをダウンロードしました

ファイルにcdされます。インストールのヘルプで、シェル プログラムとして実行するように求められましたが、次のエラーが表示されました。

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 して実行してみました

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

誰かが私に解決策を提案できますか? 助けてくれてありがとう。

4

1 に答える 1

5

システムのPythonを置き換えるのは良い考えではありません。1ポイントリリースで上に移動して も、おそらくシステムが壊れることはありませんが、誰がリスクを冒したいですか?Pythonを使用してシステムにライブラリをインストールするとeasy_install、それらが互いに競合する場合にも問題が発生する可能性があります。

別の方法は、ソースから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.

これらの4つのモジュールは古風であるか、非推奨であるため、心配する必要はありません。メッセージに他のモジュールが記載されている場合は、必要なライブラリがシステムにインストールされていないことを意味します。その場合でも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

... 等々。

virtualenvを終了するには:

$ deactivate

後日再入力するには:

$ workon my_env

詳細については、pipvirtualenvwrapperのドキュメントを確認してください。

于 2012-11-17T06:38:14.530 に答える