[解決済み] pip install" と "python -m pip install" の違いは何ですか?
質問
Python 3.4.1のローカルバージョンを持っていて、以下のように実行することができます。
python -m pip install
を実行するためのpipバイナリを見つけることができません。
pip install
. この2つの違いは何ですか?
どのように解決するのですか?
2014
全く同じことをするのです。実際、Python モジュールを配布するためのドキュメントは
が更新されたばかりです。
を使うことを推奨しています。
python -m pip
の代わりに
pip
を実際に実行するためにどのバージョンの python が使われるかを知るのが簡単だからです。
pip
を実際に実行するためにどのバージョンの python が使われるかを知るのが簡単だからです。
私の言葉やリンク先のバグ報告を信じるだけでなく、より具体的な "proof" がここにあります :) 。
もしあなたが
pip
の実行スクリプトを見ると、これをやっているだけです。
from pkg_resources import load_entry_point
<snip>
load_entry_point('pip==1.5.4', 'console_scripts', 'pip')()
呼び出しているのは
load_entry_point
を呼び出して関数を返し、その関数を実行しています。この関数が使っているエントリーポイントは
'console_scripts'
. の entry_points.txt ファイルを見てみましょう。
pip
(私の Ubuntu マシンでは /usr/lib/python2.7/dist-packages/pip-1.5.4.egg-info/entry_points.txt) を見ると、こうなっています。
[console_scripts]
pip = pip:main
pip2.7 = pip:main
pip2 = pip:main
つまり、返されるエントリーポイントは
main
の中の関数です。
pip
モジュールに追加します。
を実行すると
python -m pip
を実行するとき、あなたは
__main__.py
の中でスクリプトを実行しています。
pip
パッケージの中にあります。それは次のようになります。
import sys
from .runner import run
if __name__ == '__main__':
exit = run()
if exit:
sys.exit(exit)
そして、その
runner.run
関数はこのようになります。
def run():
base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
## FIXME: this is kind of crude; if we could create a fake pip
## module, then exec into it and update pip.__path__ properly, we
## wouldn't have to update sys.path:
sys.path.insert(0, base)
import pip
return pip.main()
見ての通り、これは単に
pip.main
関数も呼び出しています。つまり、どちらのコマンドも結局は同じ
main
関数を呼び出すことになります。
pip/__init__.py
.
関連
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] Pythonのリストメソッドであるappendとextendの違いは何ですか?
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] pipとcondaの違いは何ですか?
-
[解決済み] PythonモジュールとPythonパッケージの違いは何ですか?
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonの構文に新しいステートメントを追加することはできますか?
-
[解決済み] Pandasの'Freq'タグにはどのような値が有効ですか?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] if 節の終了方法
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。
-
[解決済み] py.test: error: unrecognized arguments: --cov=ner_brands --cov-report=term-missing --cov-config