【问题标题】:Python module not found even though "Requirement Already satisfied in Pip"即使“Pip 中已经满足要求”,也找不到 Python 模块
【发布时间】:2018-01-02 20:43:51
【问题描述】:

在 OS X 中编写一些 python,它说我用 pip "ImportError: no module named requests" 安装了几个包

当运行 pip 安装请求时

> sudo -H pip install requests 
Requirement already satisfied: requests in /usr/local/lib/python2.7/site-packages 
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python2.7/site-packages (from requests) 
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python2.7/site-packages (from requests) 
Requirement already satisfied: urllib3<1.22,>=1.21.1 in /usr/local/lib/python2.7/site-packages (from requests) 
Requirement already satisfied: idna<2.6,>=2.5 in /usr/local/lib/python2.7/site-packages (from requests)

在 twindb_cloudflare、requests、group、tarutil 和 MySQL DB 上出错。我能够在另一个脚本(在同一个文件夹中)上运行完全相同的导入而不会出错。

【问题讨论】:

  • 您是否使用相同的 Python 解释器执行这些脚本...?
  • 是的。两者都有 python file.py。

标签: python pip python-requests


【解决方案1】:

在命令提示符下运行。

pip list

如果您有旧版本,请检查您在系统上安装的版本。

尝试卸载包...

pip uninstall requests

安装后尝试:

pip install requests

你也可以测试一下 pip 是否做不到。

easy_install requests

【讨论】:

【解决方案2】:

在我的例子中,我运行的是 Jupyter 附带的 python 版本,它显然将模块安装在与默认位置不同的位置。我通过在 Jupyter 中运行它发现了这一点:

import sys
sys.executable

这给了我

'/usr/local/Cellar/jupyterlab/3.0.13/libexec/bin/python3.9'

然后我可以在 Jupyter 中运行以下命令:

!/usr/local/Cellar/jupyterlab/3.0.13/libexec/bin/python3.9 -m pip install scipy matplotlib

然后我就可以导入我的模块了:

import scipy.stats
import matplotlib

【讨论】:

    【解决方案3】:

    我有同样的问题(也在 MAC OS 中)并通过使用 python3 运行 python 脚本来解决它: python3脚本.py

    在我的情况下,我也在使用 pip3 而不是 pip。

    【讨论】:

      【解决方案4】:

      如果您使用的是 Mac,可能是您使用 pip 安装了模块(意思是 python2,但您使用 python3 执行代码,它没有为 python2 安装的模块)。

      Mac 已将 python 版本 2 设置为默认值,通常不预装 pip 或与版本 2 链接。我建议保持这种方式。将版本 3 用于您的个人用例,并将您的 Mac 保留为默认版本 2。由于您必须自己安装 python3,这意味着您可能还想检查/安装 pip3。

      检查你是否安装了 python 3:

      python3 --version
      

      检查你是否安装了 pip3(通常从 python 3.4 开始默认包含):

      pip3 --version
      

      用 pip3 检查你安装了哪些包:

      pip3 list
      

      如果您使用编辑器工具,请确保在运行文件时将其设置为使用 python3。

      VS 代码示例: 在右下角将 VS Code 设置为使用 Python3,打开 .py 文件时应该会看到:

      现在如果你想将任何模块导入 python,请确保使用 pip3 安装它们:

      pip3 install package_name
      

      如果遇到权限问题,可以考虑使用 sudo 权限运行命令:

      sudo pip3 install package_name
      

      【讨论】:

      【解决方案5】:

      我遇到了这个问题,终于找到了解决办法。

      默认为用户安装,因为普通站点包不可写

      要求已经满足:django 在 /usr/lib/python3/dist-packages (2.2.12)

      使用 'sudo' 交叉用户安装问题;

      和 pip install --target=/usr/local/python3.7/site-packages --upgrade {module_name}

      有人提到了这一点并为我工作。

      【讨论】:

      • 哇这对我有用
      【解决方案6】:

      只是为了分享我的发现,也许是一个新手错误,但在我的情况下,mariadb 是使用“sudo pip3 install mariadb”安装的,我尝试使用“python myscript.py”运行我的脚本,但没有成功。但是我在使用'python3 myscript.py'时工作,似乎你使用哪个pyhton很重要。

      【讨论】:

        【解决方案7】:

        我的树莓派 4 无法识别ipython 命令,尝试安装 iPython 时显示以下内容:

        me@raspberrypi:~ $ sudo pip3 install ipython
        Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
        Requirement already satisfied: ipython in /usr/lib/python3/dist-packages (5.8.0)
        Requirement already satisfied: pexpect in /usr/lib/python3/dist-packages (from ipython) (4.6.0)
        

        我知道这不是 PATH 问题,因为 iPython 是一个 pip 包。

        我在/usr/lib/python3/dist-packages/ 下找到了一个IPython 目录,在这个目录中我找到了程序__main__.py

        运行__main__.py 启动了 iPython:

        python3 /usr/lib/python3/dist-packages/IPython/__main__.py
        

        我在我的 .bashrc 文件中添加了以下别名,以便我只需键入 ipython

        alias ipython='python3 /usr/lib/python3/dist-packages/IPython/__main__.py'
        

        希望以上内容对您有所帮助。上帝保佑

        【讨论】:

          【解决方案8】:

          我对 PyPDF2 也有同样的问题。前一天它还在工作,但现在我无法导入。当我再次安装时,它告诉我已经安装了。

          在这里,我们需要知道它的安装位置和导入位置。 当两条路径都匹配时,这个问题可能会得到解决。

          或 如果存在版本问题,我们需要了解版本兼容性。 python 3.8xxx将支持哪个版本的PyPDF2

          【讨论】:

          • 我有 python 3.9.4 和 PyPDF2 的模块 1.26.0
          【解决方案9】:

          如果你安装了 Python(python2),那么你可以使用以下命令安装 pip(for python2)。

          curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
          python get-pip.py
          

          现在您可以检查 pip2 并尝试运行您的程序

          pip2 --version
          

          希望对你有帮助

          【讨论】:

            【解决方案10】:

            方法一

            如果你的系统安装了多个 python 版本,比如在我的 ubuntu 中默认 python 版本是 pythonpython3,那么 pip 也有不同的版本,比如 pippip3。所以在这种情况下通过特定的python版本访问pip -m like

            python3 -m pip install package_name
            

            python -m pip install package_name
            

            如果您使用的是 linux,请确保使用 sudo

            方法二

            在第二种方法中,您需要找到安装目录(python 从中查找模块)。为此运行以下 python 脚本

            import sys
            print(sys.path)
            

            在我的情况下它返回

            ['', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/home/mudasir_habib/.local/lib/python3.8/site-packages', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
            

            这些是python用来查找模块的路径,我复制了dist-packages路径。所以现在通过提供安装的目标路径来运行命令,如下所示

            python -m pip install package_name -t /your/copied/path
            

            在我的情况下,我运行以下命令来解决我的问题

            sudo python3 -m pip install keras -t /usr/lib/python3/dist-packages
            

            希望对你有帮助

            【讨论】:

            • 我们不能永久设置目标路径还是每次安装包时都要定义?
            • 通常 pip 自己管理所有的事情。但是有些时候我们安装了多个python和pip版本,然后pip找不到正确的路径,所以我们需要手动提供。
            猜你喜欢
            • 2013-01-17
            • 1970-01-01
            • 1970-01-01
            • 2019-10-02
            • 2019-09-25
            • 2021-04-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多