1. ホーム
  2. リナックス

LinuxでのPythonとpipのインストールと "AttributeError: module 'pip.__main__' has no attribute '_main'エラー"

2022-01-24 16:07:22
<パス

(著者:ユー・ユー・チェン)

I. LinuxでのPythonのインストール

最近、Linuxを流し読みするようになったのですが、Linuxをインストールした後の最初のステップはPythonのインストールです。

しかし、Linuxはこの点で特に親切で、Pythonが付属していますが、デフォルトで使われているPythonはPython2で、基本的にPython2はもう使わず、Python3を使っているので、システムに指すPythonを修正する必要があります。どのバージョンのPythonかわからない場合は、まず、通常デフォルトでインストールされている**/usr/bin/**というディレクトリを見て、リンクをリセットしてください。リンクをリセットする方法は以下の通りです。

#Right-click on the desktop, open a terminal, and type the following command
sudo rm /usr/bin/python # Remove the original link
sudo ln -s /usr/bin/python3.5 /usr/bin/python # Create a new link to the self-hosted Python 3.5


コマンドラインに直接pythonと入力すると、pythonのインストール状況を確認でき、変更が成功した場合は新しいバージョン情報が表示されます。

II. AttributeError: モジュール 'pip. メイン ' は属性 '_main' を持っていない エラー

Pythonに加え、pipもインストールされていることが条件となります。最初はこれでやっていたのですが、以下のコマンドを入力して上記のようなエラーになりました。

sudo apt-get install python-pip python-dev build-essential # Download and install pip
sudo pip install --upgrade pip #update pip


pipをアップデートした後、新しいバージョンのpipはオンラインチュートリアルに従って設定ファイルを修正し、動作させる必要がありますが、これは以下のように行われます。

#Open the configuration file of pip
# Remember to add sudo here, that is, open as administrator, otherwise you will not have permission to modify the file
sudo gedit /usr/bin/pip 

#Modify the corresponding part of the file as follows
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__. _main())


この一連の作業を終えた後、バージョンを確認したかったので、コマンドラインに直接pipと入力したところ、次のようなエラーが報告されました。

AttributeError: module 'pip.__main__' has no attribute '_main'


いろいろ検索してみると、pipのバージョンが10.0より高いことが原因ではないかと思われ、pipのバージョンを下げるには、以下のようにして具体的なバージョンを取得します。

python -n pip install --upgrade pip==9.0.3


と促される結果となった。

You are using pip version 8.1.1,however version 18.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
 


で、せっかくバージョンを下げたのに、また上げないといけないのが、嫌な感じです。仕方なく、sudoなしで一度アップグレードしてみた:。

pip install --upgrade pip


それでも同じエラーが出るので、pipの設定ファイルを元に戻して、sudoなしでpip updateコマンドを再度試し、その後に修正することにしました。最終的に正しいバージョン情報を表示して再度pipコマンドを打つとうまくいき、pip 18.1を使っていることが判明したので、バージョンが低すぎたからというわけではなかったようです。

III. Linuxでのpipのインストール

ということで、正しいインストール方法をまとめると

sudo apt-get install python-pip python-dev build-essential #Download and install pip
pip install --upgrade pip #update pip


pipをアップデートした後、新しいバージョンのpipはオンラインチュートリアルに従って設定ファイルを修正し、動作させる必要がありますが、これは以下のように行われます。

#Open the configuration file of pip
# Remember to add sudo here, that is, open as administrator, otherwise you will not have permission to modify the file
sudo gedit /usr/bin/pip 

#Modify the corresponding part of the file as follows
from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__. _main())


もし上記が間違いであれば、まずファイルを元に戻し、さらに数回更新し、pipと入力するとpipで使用する様々なコマンドが表示されるまでこのようにファイルを修正するだけで、動作するようになります。

IV. Python3 対応の pip と E: サブプロセス /usr/bin/dpkg がエラーコード (1) を返したエラー

Linux の python が python3 にアップグレードされた場合、対応する pip も python3-pip にアップグレードされるはずですが、もし python-pip をインストールするためにアップグレードされると "E: Sub-process /usr/bin/dpkg returned an error code (1) & quot; エラーを報告することになります。この場合 apt-get install python3-pip を使用して、python3相当のpipをインストールします。

しかし、apt-get install python3-pip で python3 対応の pip をインストールしても、上記の問題が発生し、その解決策として https://www.cnblogs.com/ilym/p/8387561.html . その後、python3-pip を再インストールし、バージョンを確認するために pip --version を使用せず、pip3 --version を使用する必要があります。 pip3 install numpy .

参照記事の解決策を以下に掲載し、動作確認済みです。

Solution.
Go to the following directory.
cd /var/lib/dpkg
Delete the following file.
sudo mv info info.baksudo
Re-create the file: sudo
sudo mkdir info
To install again.
(1) To install pip3.
sudo apt-get install python3-pip
(2) Check the pip3 version to see if it was installed successfully: sudo apt-get install python3-pip
pip3 --version