LinuxでのPythonとpipのインストールと "AttributeError: module 'pip.__main__' has no attribute '_main'エラー"
(著者:ユー・ユー・チェン)
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
関連
-
Makefileを参照してください。***セパレータがない。 停止 原因と解決策
-
Linux の ssh 公開鍵の追加
-
linuxのインストールファイルでは、configure: error: no acceptable C compiler found in $PATH errorが表示されます。
-
linux system: make: *** `install' をターゲットにするルールがありません。停止してください。
-
これを知らなければ、おそらくLinuxを使い始めてもいないでしょう
-
C言語改善
-
セキュアネットワーク(sshポートマッピング) -----図の詳細を使用することができます。
-
linux リモートコピーコマンドと通常のファイルソリューションではありません。
-
Linux "std::bad_allocのインスタンスを投げた後に呼び出されたterminate what(): std::bad_alloc Aborted "
-
gcc/g++エラー... /crt1.o: 関数 `_start' で。(.text+0x18): `main'への未定義の参照エラー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
SSHパスワードフリーログイン設定後、stdinがターミナルでないため、疑似ターミナルが割り当てられない。
-
MySQL5.7 のパスワード変更で ERROR 1054 (42S22) が発生しました。fie'内の不明なカラム'password'が見つかりません。
-
警告: 組み込み関数 'exit' の非互換な暗黙の宣言
-
Python easy_install は "ImportError: pkg_resources という名前のモジュールがありません" というエラーが発生しました。
-
ImportError: Flaskという名前のモジュールがなく、パッケージのインポートに失敗しました。
-
CentOS 7 エラー: curl#60 - "ピアの証明書は有効期限が切れています。"
-
LinuxでDNSの正逆解析エラー:** server can't find ?・・・・・・? : NXDOMAIN
-
Linuxでビジー状態のテキストファイルでプログラムを実行する場合の対処法
-
pip: コマンドが見つかりません
-
dpkg: パッケージの処理エラー ***(--install): 依存関係の問題 - 未設定にする