60

最近、ソースからコンパイルして Python 2.7.3 を CentOS マシンにインストールしました。Python 2.7.3 は /opt/python2.7 にインストールされています。インストール時に /usr/bin/python を新しいバージョンを指すように変更しました。私がやったときにyumが壊れたので、これは明らかに間違っています。私は次のようになります。

There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named yum

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.3 (default, May 15 2012, 17:45:42) 
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)]

If you cannot solve this problem yourself, please go to 
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

/usr/bin/python を変更して python 2.6.6 を指すようにしましたが、現在は 2.6.6 が python のデフォルト バージョンです。これを修正する方法はありますか?

4

10 に答える 10

144

最新バージョンのPython2とPython3をCentOS6とCentOS7にインストールする方法についてのクイックガイドを作成しました。現在、Python2.7.13とPython3.6.0を対象としています。

# Start by making sure your system is up-to-date:
yum update
# Compilers and related tools:
yum groupinstall -y "development tools"
# Libraries needed during compilation to enable all features of Python:
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel expat-devel
# If you are on a clean "minimal" install of CentOS you also need the wget tool:
yum install -y wget

次の手順は、インストールするPythonのバージョンによって異なります。

Python 2.7.14の場合:

wget http://python.org/ftp/python/2.7.14/Python-2.7.14.tar.xz
tar xf Python-2.7.14.tar.xz
cd Python-2.7.14
./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall

# Strip the Python 2.7 binary:
strip /usr/local/lib/libpython2.7.so.1.0

Python 3.6.3の場合:

wget http://python.org/ftp/python/3.6.3/Python-3.6.3.tar.xz
tar xf Python-3.6.3.tar.xz
cd Python-3.6.3
./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall

# Strip the Python 3.6 binary:
strip /usr/local/lib/libpython3.6m.so.1.0

Pipをインストールするには:

# First get the script:
wget https://bootstrap.pypa.io/get-pip.py

# Then execute it using Python 2.7 and/or Python 3.6:
python2.7 get-pip.py
python3.6 get-pip.py

# With pip installed you can now do things like this:
pip2.7 install [packagename]
pip2.7 install --upgrade [packagename]
pip2.7 uninstall [packagename]

Pythonのシステムバージョンを変更することは想定されていません。これは、システムが破損するためです(ご存知のとおり)。元のシステムバージョンをそのままにしておく限り、他のバージョンのインストールは正常に機能します。/usr/localこれは、configureを実行するときにカスタムプレフィックス(たとえば)を使用し、Pythonのビルドをインストールするときにmake altinstall(通常の代わりに)を使用することで実現できます。make install

Pythonの複数のバージョンを利用できるようにすることは、バージョン番号を含むフルネーム(たとえば、「python2.7」または「pip2.7」)を入力することを覚えている限り、通常は大きな問題ではありません。すべてのPython作業をvirtualenvから行う場合は、バージョン管理が自動的に処理されるため、virtualenvをインストールして使用するようにしてください。

于 2012-06-25T20:30:08.543 に答える
14
vim `which yum`
modify #/usr/bin/python to #/usr/bin/python2.4
于 2013-05-15T04:59:20.757 に答える
5

環境変数を...の前に置くか、入力に慣れて/opt/python2.7/binください。PATH/usr/binpython2.7

于 2012-05-16T18:34:30.847 に答える
2

pythonbrewのアクティブなフォークである pythonz は、これを簡単にします。次のバージョンをインストールできます。

# pythonz install 2.7.3

次に、次のようにシンボリック リンクを設定します。

# ln -s /usr/local/pythonz/pythons/CPython-2.7.3/bin/python2.7 /usr/local/bin/python2.7
# python2.7 --version
Python 2.7.3
于 2012-11-05T11:50:38.077 に答える
1
ln -s /usr/local/bin/python2.7 /usr/bin/python
于 2014-12-28T04:11:19.803 に答える
0

私にとっては、修正されるエラーは、異なるバージョンの python がインストールされていて、yum が特定の .so ファイルを見つけられず、例外をスローする場合です。
エラーによると、yumは2.7.5を望んでいます。

which python gives me /usr/bin/python
python --version gives me 2.7.5

私にとっての修正は、 /lib64 を LD_LIBRARY_PATH 環境変数に追加することでした。関連するコンテンツは /lib64/python2.7 および /lib64/python3.6 です。

export LD_LIBRARY_PATH=/lib64:$LD_LIBRARY_PATH

複数の Python バージョンがインストールされている場合の yum エラーを修正しました。

于 2020-01-28T14:40:04.127 に答える
-1

rpm パッケージを試してみたい場合は、最新の Fedora rpm に基づいてバイナリ パッケージをインストールできますが、RHEL6/CentOS6/ScientificLinux-6 用に再コンパイルされています。

http://www.jur-linux.org/download/el-updates/6/

よろしくお願いします、

フロリアン・ラ・ロッシュ

于 2013-05-03T16:13:25.547 に答える
-1

代わりに、関連するスクリプト (/usr/bin/yum など) のパスを更新して、以前の Python をインタープリターとして指定することをお勧めします。

理想的には、インストールされているデフォルトの Python でサポートされるように、yum とそれに関連するスクリプトをアップグレードする必要があります。

それが不可能な場合、上記は完全に実行可能であり、テスト済みです。

変化する:

#!/usr/bin/python

上記のyumの改善ができるまで、古いバージョンのパスが何であれ。

上記を実行できないケースは、隔離されたマシンを使用している場合、手動で rpm をアップグレードする時間がない場合、または標準の yum リポジトリに一時的または永続的に接続できない場合です。

于 2012-09-10T21:59:39.320 に答える