python - pip3 没有安装 python3 的包

标签 python python-3.x python-2.7

当我使用 python3 运行 python 脚本时,出现以下错误:

Traceback (most recent call last): File "rea_scrape.py", line 2, in import requests ModuleNotFoundError: No module named 'requests'

当我运行pip3 install requests时很明显requests已经被安装了。

Requirement already satisfied: requests in /Library/Python/2.7/site-packages (2.18.4) Requirement already satisfied: certifi>=2017.4.17 in /Library/Python/2.7/site-packages (from requests) (2018.4.16) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /Library/Python/2.7/site-packages (from requests) (3.0.4) Requirement already satisfied: idna<2.7,>=2.5 in /Library/Python/2.7/site-packages (from requests) (2.6) Requirement already satisfied: urllib3<1.23,>=1.21.1 in /Library/Python/2.7/site-packages (from requests) (1.22)

但是,仔细检查消息似乎表明 pip3 正在安装 Python2.7 的软件包,这不是我的意图。

结果是我没有使用 pip3 安装任何内容。命令可以导入到 python3 运行的脚本中.

如何解决这个问题?

仅供引用,我正在使用 MacOS High Sierra。

最佳答案

看起来您的 pip3 安装指向了错误的 python 版本。如果您查看 /usr/local/bin 中的文件,您可以看到一个名为 pip3 的文件。在那里你可以看到它所指向的 python 版本。就我而言,该文件的内容如下:

#!/usr/bin/python3

# -*- 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())

在您的情况下,第一行必须是 #!usr/bin/python2 。您可以通过在终端上使用 pip3 -V 来验证这一点。

解决此问题的另一种方法是完全卸载 pip3 安装并再次重新安装 python3-pip

  • curl https://bootstrap.pypa.io/get-pip.py | python3
  • python3 来自这个答案:How to install pip for Python 3 on Mac OS X?
  • 另外请看看这个问题:pip3.4 -V refers to python2.7 installation 这个问题应该能完整地回答你。

    关于python - pip3 没有安装 python3 的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51490675/

    相关文章:

    python - 如何从第 n 个元素开始传递列表

    python - Matplotlib 只是给出错误信息

    python - 如何在线性时间内合并Python中的两个排序列表(仅遍历一次)?

    python - 使用数据框的 Seaborn 中的水平条形图

    python - 为什么 python 字典给我Keyerror?

    python - 如何从另一个函数访问框架小部件?

    python-3.x - 从整数列表中查找偶数之和

    python - Pygame,改变屏幕并传回

    python - 使用 Python (matplotlib) 的自定义标记

    python 3.x : move to next line