【问题标题】:PyCharm cannot find the packages in virtualenvPyCharm 在 vi​​rtualenv 中找不到包
【发布时间】:2016-04-03 21:11:32
【问题描述】:

我有最新的 PyCharm CE,并与virtualenv 一起使用。我已将解释器定义为virtualenv 中的解释器。 PyCharm 中的 Project Interpreter 窗口列出了我已安装的所有包。我通过运行 pip freeze > requirements.txt 并手动运行包来确认这一点。

我的问题是 PyCharm 在其编辑器窗口中找不到某些包含,例如 Flask-Login:

from flask.ext.login import current_user, login_user, logout_user, login_required 中,包含current_user, login_user, logout_user, login_required 都被标记为未解析的引用。

我错过了什么吗?

【问题讨论】:

  • 我曾经遇到过这个问题,只是jetbrains 跛脚。尝试File -> Invalidate Caches 并重新启动 PyCharm。您可能需要等待几分钟才能重建缓存
  • 在我的例子中,我不小心添加了一个新的 venv,而不是只选择旧的,从而弄乱了我的 venv。解决方案是从我的 Pycharm 项目中删除 venv 目录(这也删除了我的本地 venv)。之后,我设置了一个新的 venv,并这次将它正确地添加到了 Pycharm。
  • 现在是 2021 年,我仍然有同样的问题......(Pycharm 2021.3.1 Professional E.)。当前的答案都不适合我。

标签: python virtualenv pycharm


【解决方案1】:

问题可能在于 PyCharm 为您的虚拟环境选择了错误的“解释器路径”。去这里:

PyCharm (menu) -> Preferences (Menu option)
               -> Project: <name> (Dropdown) 
               -> Project Interpreter (Menu option)
               -> 'Settings' button (Looks like a gear)
               -> More (Menu option)
               -> Select your virtualenv interpreter
               -> Click 'Show paths for interpreter' button (on bottom of list window)

现在您在这个(诚然是曲折的)位置,您应该看到这个解释器正在使用的路径。如果我的理论是正确的,那么这些都指向全球系统位置。要添加虚拟环境路径,您应该单击+ 按钮并添加虚拟环境中存在的相应路径。完成此操作后,最好选择全局系统路径并单击- 将其删除。点击apply,然后去File -&gt; Invalidate caches / Restart重新加载PyCharm。

这应该让您的解释器指向您安装到 virtualenv 中的库的正确位置,并且您应该不再收到导入错误。请注意,即使使用此修复程序,您也不会在 Project Interpreter 下看到您的库,但它们应该正在加载。

【讨论】:

  • 事实上这是正确的程序(尽管 PyCharm 在这些事情上如此原始有点荒谬)。
  • 文件 -> 使缓存无效/重新启动以重新加载 PyCharm。 我没有做的事情。
【解决方案2】:

在最新版本的 PyCharm 中(在我的例子中是 2016.1.4):

  • 设置
  • 项目:项目名称
    • 项目口译员
    • 在右侧会有一个下拉菜单,您可以在其中选择解释器。应该有 venv 选项。

请参阅下图以获得更好的解释(就像他们说的,一张图片价值数千字)

【讨论】:

  • 这个答案不清楚;我该如何处理 venv 选项?您是否要默认引用其他评论?
  • @rrlamichhane 问题明确指出他们将它与 virtualenv 一起使用,venv 是使用 virtualenv 时创建的默认文件夹。我相信你只需要在 virtualenv 中使用 Python 解释器。如果您安装的软件包在 virtualenv 中,它应该可以工作。
【解决方案3】:

即使在 Nathaniel Ford 和 dieend 的正确建议之后,我也面临同样的问题(仍然没有找到包含)。确保您的运行/调试配置选择了正确的 python 解释器:

【讨论】:

    【解决方案4】:

    我注意到每次我打开一个不同的项目时,它仍然具有我之前正在处理的项目的 venv。

    我做的是:

    ctrl-alt-s(进入首选项),然后是 Project Interpreter/settings(齿轮图标),显示全部,然后删除所有不是您当前项目的 venv 环境(使用 - 符号)。重新启动,您应该一切顺利。

    【讨论】:

      【解决方案5】:

      另请注意,接受的答案不再适用于 PyCharm 菜单结构。现在是File &gt; Settings &gt; Project &gt; Project Interpreter &gt; Gear Icon &gt; Show All

      以下步骤详细介绍了“核”选项:

      1. 删除您的项目虚拟环境目录(例如/venv
      2. 删除可通过本文顶部所列路线访问的菜单选项中列出的所有其他口译员。
      3. 关闭 PyCharm
      4. 删除项目文件夹中的.idea目录
      5. 重启 PyCharm,打开项目文件夹。
      6. 完成配置新解释器的过程。

      这几乎可以让你从头开始。

      【讨论】:

        【解决方案6】:

        打开Preferences -&gt; Project -&gt; Project Interpreter,你看到那里的模块了吗?

        如果是,您的项目中可能有另一个文件与flask.ext.login 同名,这会阻止 pycharm 定位实际模块。

        如果没有,您可以点击解释器旁边的... 并选择more...,选择您的解释器并在底部(过滤器旁边)点击Show paths for the selected interpreter,您可以添加模块的路径在那里。

        【讨论】:

        • 尝试了您的建议,但对我不起作用。我什至用 pypy 创建了一个新的 virtualenv,但仍然找不到相同的包含。
        • 抱歉,我不知道如何解决您的问题。
        【解决方案7】:

        对我来说,最简单的解决方案是在根目录中打开项目(我的项目有服务器和客户端目录,因此根目录包含它们)。当您在根目录中打开项目时,它能够找到依赖项而不会弄乱 pycharm 设置,因为它按惯例使用它们。

        【讨论】:

          【解决方案8】:

          我最近在这个话题上挣扎了两分钱。 Nathaniel Ford 的回答很好,除了这一部分:

                         -> Select your virtualenv interpreter
          

          我不清楚。

          我试了好几次

          ~/.virtualenvs/python-audition-2.9/bin/python
          

          而它只适用于

          ~/.virtualenvs/python-audition-2.9/local/bin/python
          

          注意到后一条路径中的 .../local/... 了吗?这对我来说真的很重要。并且不要忘记File -&gt; Invalidate caches / Restart 重新加载 PyCharm。

          【讨论】:

            【解决方案9】:

            转到 /venv/bin/ 并检查所有激活脚本。你的 venv 路径可能是错误的。

            【讨论】:

              【解决方案10】:

              我无法将现有的虚拟环境分配给我的项目,但是在去之后

              文件->设置->项目解释器->全部显示->点击'+'

              要创建一个新的虚拟环境或者我们可以选择现有的虚拟环境,我可以分配和使用现有的虚拟环境。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-03-09
                • 2021-02-21
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-09-13
                • 1970-01-01
                • 2012-10-08
                相关资源
                最近更新 更多