为什么Python中的“ pip install”会引发SyntaxError?


232

我正在尝试使用pip安装软件包。我尝试pip install从Python Shell 运行,但得到了SyntaxError。为什么会出现此错误?如何使用pip安装软件包?

>>> pip install selenium
              ^
SyntaxError: invalid syntax

Answers:


297

pip是从命令行而不是Python解释器运行的。这是一个安装模块的程序,因此您可以从Python使用它们。安装模块后,即可打开Python shell并执行import selenium

Python Shell不是命令行,而是一个交互式解释器。您在其中键入Python代码,而不是命令。


2
感谢您的澄清,但我仍然无法运行它。到底在哪里?它给我一个“无法识别点子”的错误(因为我不是正确的目录)。它安装在\ site-packages中,但我一直以为它找不到任何pip.exe
Nacht

25
@Nacht- pip将位于python安装的scripts目录中,因此您需要将其添加到路径中。添加C:\Python32\scripts到您的中PATH。根据安装位置,根据需要更改路径。
wkl 2011年

3
实际上,Windows中的pip.exe与/ scripts目录中的其他脚本一样是python脚本,但是包装在exe中以使用默认的python解释器运行它。通过使用7-zip打开pip.exe,您可以看到主要的 .py导入pip,sys和re模块...(然后您将找到在python shell中运行它的答案)-> pip是常规的python模块。别忘了Windows不是第一个支持python的平台,而linux才是操作系统的一部分。
Zydnar

1
我知道我必须从命令行(不是python命令行)执行此操作。这是在将目录更改为python.exe的位置之后,然后需要将文件类型放在pip3上。就我而言,我是在请求HTTP工作之后。即:python pip3.exe安装请求<---效果很好,对于pytz模块重复了相同的操作
natur3 '18

106

使用命令行,而不是Python Shell(Windows中的DOS,PowerShell)。

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

如果您使用最新的安装程序将Python安装到PATH中,则无需进入该文件夹即可运行pip

Mac或Linux中的终端

$ pip install XYZ

3
感谢您包括C:....,帮助我意识到需要CD到哪里,因为您不能简单地打开命令行并键入pip。
hammythepig

2
仅供参考,我刚刚安装的Python没有设置PATH。我不得不手动执行此操作,指向%APPDATA%
UuDdLrLrSs

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以获取参考。


更新由于点子版本10.x,没有更多get_installed_distributions()main方法import pip 转而使用 import pip._internal as pip

更新ca。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'])

如果要在任何安装失败的情况下停止安装其他软件包,请在一个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.exepython 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 Shell中有效,因此我认为应该是公认的答案。
弗朗索瓦·M.

5
这正是我在谷歌搜索这个问题时希望找到的。
安德鲁·布雷扎(AndrewBrēza)'17

1
很好的答案,它肯定应该包括在这里,但是我不同意它应该是公认的答案,因为用户显然正在尝试使现在普遍存在的语法“ pip install”起作用。由于该语法不适用于此方法,因此不能直接解决该问题。但是,它可能比接受的答案更有用:)
Dan

不知道OP到底是什么意思,但是这个答案实际上是很晚的答案,因此,在这里接受它并不重要。
Zydnar

@Zydnar,同意-我的回应是Francois,他说这应该是公认的答案。我发表了关于为什么不这样做的理由。也就是说,我仍然认为这是一个很棒的职位。

53

要在Python 3.x中运行pip,只需按照Python页面:安装Python模块上的说明进行操作。

python -m pip install SomePackage

请注意,这是从命令行而不是python shell运行的(原始问题中语法错误的原因)。


1
我仍然收到无效的语法。我在Windows 10 PC上使用IPython。有什么想法吗?
DataGirl 2013年

此页面包含有关安装IPython的说明:ipython.readthedocs.io/en/stable/install/index.html $ pip安装ipython。大概会转换成$ python -m pip install ipython
Dan

1
这没有回答有关语法错误的任何内容
OneCricketeer

其他答案已经涵盖了这一点,但是我现在添加了它。我的回答只是对3.x的补充。
丹丹

在Windows 10上为我工作-还建议我按照以前的评论升级点数:)
Kdean571 '18

2

最初我也遇到过同样的问题,我安装了python,当我运行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>>。在这里,我正在安装软件包spyder,因此我的命令行语句将为as,pip install spyder然后进入运行屏幕。

在此处输入图片说明

我希望我们已经完成了!


1
这不能回答问题。
sinoroc

0

您需要在cmd中而不是在IDLE中键入它。因为如果您要从IDLE安装某些内容,则IDLE不是命令提示符,请输入以下命令

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

这就像pip <commands>在终端一样叫点子。这些命令将由您在其中执行的空格分隔。


由于有关pip版本10.0,这已经过时了。ImportError: cannot import name main使用pip 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']) 

为什么不朱西使用:从pip .__ main__导入_main?
Matthijs990

-3

尝试使用以下命令升级pip,然后重试

python -m pip install -U pip

pip的更新不会让它在python shell中工作
Matthijs990
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.