为什么“pip install”;在Python内部引发SyntaxError?

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

>>> pip install selenium
^
SyntaxError: invalid syntax
990389 次浏览

pip是从命令行运行的,而不是Python解释器。它是一个安装模块的程序,所以你可以从Python中使用它们。一旦你安装了模块,然后你可以打开Python shell并执行import selenium

Python shell不是一个命令行,而是一个交互式解释器。你可以在里面输入Python代码,而不是命令。

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

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

如果您使用最新的安装程序将Python安装到PATH中,则不需要在该文件夹中运行pip

Mac或Linux终端

$ pip install XYZ

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

python -m pip install SomePackage

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

正如@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


UPDATE: 从pip版本10.x开始import pip 而不是使用 import pip._internal as pip下没有更多的get_installed_distributions()main方法。

更新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']
人力资源> < p > < 如果你想在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.exepip3.exe,不管它是python2。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())

你需要在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后的所有答案,但没有一个是我的正确路径。当然,这种方法在Kaggle中是有效的

from pip._internal import main as _main


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

我安装了python,当我运行pip命令时,它会向我抛出一个错误,如下图所示。

enter image description here

确保环境变量中添加pip path。对我来说,python和pip的安装路径是::
Python: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\
pip: C:\Users\fhhz\AppData\Local\Programs\Python\Python38\Scripts
这些路径都被添加到环境变量path中

现在打开一个新的cmd窗口并输入pip,你应该会看到如下所示的屏幕。

enter image description here

现在输入pip install <<package-name>>。这里我正在安装包spyder,所以我的命令行语句将作为pip install spyder,这里是我的运行屏幕..

enter image description here

我希望我们结束这一切!!

如果从命令行执行,

试一试,

Python -m PIP安装硒

或(适用于Python3及以上版本)

Python3 -m PIP安装硒