Python内で「pip install」を実行するとSyntaxErrorが発生するのはなぜですか?


232

pipを使用してパッケージをインストールしようとしています。pip installPythonシェルから実行しようとしましたが、SyntaxError。このエラーが発生するのはなぜですか?pipを使用してパッケージをインストールするにはどうすればよいですか?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

回答:


297

pipは、Pythonインタープリターではなく、コマンドラインから実行されます。モジュールをインストールするプログラムなので、Pythonからモジュールを使用できます。モジュールをインストールしたら、Pythonシェルを開いて実行できますimport selenium

Pythonシェルはコマンドラインではなく、インタラクティブなインタープリターです。コマンドではなくPythonコードを入力します。


2
説明をありがとうございましたが、まだ実行できません。正確にはどこにありますか?「pipが認識されません」というエラーが表示されます(適切なディレクトリではないため)。\ site-packagesにインストールされましたが、考えたところ、pip.exeが見つかりません
Nacht

25
@Nacht- pippythonインストールのスクリプトディレクトリにあるので、パスに追加する必要があります。に追加C:\Python32\scriptsしますPATH。インストールした場所に基づいて、必要に応じてパスを変更します。
wkl

3
実際、windowsのpip.exeは、/ scriptsディレクトリにある他のpythonスクリプトですが、デフォルトのpythonインタープリターで実行するためにexeでラップされています。7-zipでpip.exeを開くと、あなたは見ることができますメインの .pyがpip、sys、およびreモジュールをインポートしていることがわかります(そして、Pythonシェル内で実行する方法の答えがあります)-> pipは通常のPythonモジュール。WindowsがPythonをサポートする最初のプラットフォームではなかったことを忘れないでください。Linuxはそうでした。PythonはOSの一部です。
Zydnar 2017

1
私はこれをコマンドラインから(Pythonコマンドラインではなく)実行する必要があることを知っています。これは、ディレクトリをpython.exeの場所に変更した後で、pip3にファイルタイプを配置する必要がありました。私の場合、私はHTTP作業のリクエストの後でした。つまり:python pip3.exeインストール要求<---これは完全に機能し、pytzモジュールでも同じことが繰り返されました
natur3

106

Pythonシェル(DOS、WindowsのPowerShell)ではなく、コマンドラインを使用します。

C:\Program Files\Python2.7\Scripts> pip install XYZ

最新のインストーラーを使用してPATHにPythonをインストールした場合、pipを実行するためにそのフォルダーにいる必要はありません

MacまたはLinuxのターミナル

$ pip install XYZ

3
C:....を含めてくれてありがとう、コマンドラインを開いてpipと入力できないので、どこにcdを実行する必要があるかを理解するのに役立ちました。
hammythepig 2017

2
参考までに、Pythonをインストールしただけでは設定しませんでしたPATH。私はこれを手動で行う必要があり、インストールパスを%APPDATA%
ポイントし

61

@sinorocが示唆したように、pipはスレッドを閉じる可能性があるか、インタプリタを再起動して新しくインストールされたパッケージをロードする必要があるため、pipを介してパッケージをインストールする正しい方法は別のプロセスを使用しているため、これはAPIを使用する正しい方法ですsubprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])が、Pythonでは内部APIにアクセスし、APIを使用していることがわかっている場合は、とにかく内部APIを使用することができます。https://www.lfd.uci.edu/~gohlke/pythonlibs/のような代替リソースを使用して独自のGUIパッケージマネージャーを構築している場合

次のソリューションは、提案の更新に反対票を投じるのではなく、古くなっています。参照としてhttps://github.com/pypa/pip/issues/7498を参照してください。


更新pipバージョン10.x以降代わりに使用する方法get_installed_distributions()main方法はありません。import pip import pip._internal as pip

更新約 v.18 get_installed_distributions()は削除されました。代わりに、次のfreezeようなジェネレータを使用できます。

from pip._internal.operations.freeze import freeze

print([package for package in freeze()])

# eg output ['pip==19.0.3']


Pythonインタープリター内でpipを使用する場合は、次のようにしてください。

import pip

package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade']) 
# --upgrade to install or update existing packages

インストールされているすべてのパッケージを更新する必要がある場合は、以下を使用します。

import pip

for i in pip.get_installed_distributions():
    pip.main(['install', i.key, '--upgrade'])

インストールが失敗した場合に他のパッケージのインストールを停止するには、1回のpip.main([])呼び出しでそれを使用します。

import pip

package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])

-r/ --requirementパラメーターを使用してファイルのリストからインストールする場合、open()関数は必要ありません。

pip.main(['install', '-r', 'filename'])

警告:一部のパラメータは単純です--helpあるため、Pythonインタープリターが停止する可能性があり。

好奇心:pip.exe実際にpythonインタプリタとpipモジュールを使用することでとにかく。あなたが解凍するpip.exeか、pip3.exeそれがpython 2.xまたは3.xであるかに関係なく、中には同じ単一ファイルがあります__main__.py

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

5
これはPythonシェルで機能するので、私はそれが受け入れられる答えであると思います。
フランソワM.

5
これは、この問題をグーグルするときに私が見つけたかったことです。
AndrewBrēza2017

1
すばらしい答えです。間違いなくここに含める必要がありますが、ユーザーが今では遍在する構文 "pip install"を機能させることを明確に試みていたため、これは受け入れられる答えではないはずです。その構文はこの方法では機能しないため、その問題を直接解決することはできません。それは受け入れられた答えよりも役に立つかもしれません:)
Dan

OPが実際に何を意味するのかはわかりませんが、この答えは本当に遅い答えだったので、ここで受け入れられるかどうかは重要ではありません。
Zydnar 2018

@ザイドナー、同意-私の返答はフランソワに対するものであり、これは受け入れられる答えであると述べた。私はなぜそうではないかについて私の推論を投稿しました。とは言っても、これは素晴らしい投稿だと思います。
ダン

53

Python 3.xでpipを実行するには、Pythonのページ:Pythonモジュールのインストールの指示に従ってください。

python -m pip install SomePackage

これはpythonシェルではなくコマンドラインから実行されることに注意してください(元の質問の構文エラーの理由)。


1
まだ無効な構文を受け取っています。私はWindows 10 PCでIPythonを使用しています。何かご意見は?
DataGirl

このページには、IPythonの インストール手順が含まれています:ipython.readthedocs.io/en/stable/install/index.html $ pip install ipython。おそらくそれは$ python -m pip install ipythonに変換されます
Dan

1
これは構文エラーについては何も答えません
OneCricketeer

これはすでに他の回答でカバーされていましたが、今追加しました。私の答えは3.xの補足でした。
Dan

Windows 10で私のために働きました-また、以前のコメントに従ってピップをアップグレードするようにアドバイスしました:)
Kdean571

2

最初、私もこの同じ問題に直面しました。Pythonをインストールしました。pipコマンドを実行すると、下の写真に示すようなエラーが発生していました。

ここに画像の説明を入力してください

環境変数にpipパスが追加されていることを確認します。私にとって、pythonとpipのインストールパスは 次の とおり
です。:Python:C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip:C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
これらのパスは両方とも、環境変数のパスに追加されました。

新しいcmdウィンドウを開き、pipと入力すると、次のような画面が表示されます。

ここに画像の説明を入力してください

次にと入力しpip install <<package-name>>ます。ここではパッケージスパイダーをインストールしているので、コマンドラインステートメントは次のようにpip install spyderなり、実行画面が表示されます。

ここに画像の説明を入力してください

これで終わりです!


1
これは質問の答えにはなりません。
sinoroc

0

IDLEではなくcmdに入力する必要があります。IDLEから何かをインストールする場合、IDLEはコマンドプロンプトではないため、これを入力します。

>>>from pip.__main__ import _main as main
>>>main(#args splitted by space in list example:['install', 'requests'])

これはpip <commands>ターミナルのようにpipを呼び出しています。コマンドは、そこに行っているスペースで区切られます。


これは、pipバージョン10.0から古くなった回答です。ImportError: cannot import name mainピップv19.0.3を使用
Zydnar

-1

プログラム的には、以下が現在機能します。10.0以降のすべての回答が表示されますが、どれも正しい方法ではありません。確かにKaggle内では、このアプローチが機能します

from pip._internal import main as _main

package_names=['pandas'] #packages to install
_main(['install'] + package_names + ['--upgrade']) 

jusyを使用しない理由:pip .__ main__import_mainから?
Matthijs990

-3

以下のコマンドでpipをアップグレードして、再試行してください

python -m pip install -U pip

pipを更新しても、Pythonシェルで動作しない
Matthijs990
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.