【问题标题】:PyCharm does not recognize modules installed in development modePyCharm 无法识别以开发模式安装的模块
【发布时间】:2014-11-29 08:42:49
【问题描述】:

我在 PyCharm 3.4.1 专业版中有两个纯 python 项目。第一个,我们称它为p(类似于包),其结构为 setuptools 包(即带有 setup.py、所有要求等,但它不会上传到 pypi 或任何其他在线存储库)。第二个,我们称它为s(类似脚本),只是一个带有两个模块的python脚本。

项目s(在 PyCharm 中)配置为使用专用的 virtualenv,我们称之为venv

我遇到的问题如下:当我像这样在venv 中安装项目(包)p 时:

$ source /path/to/venv/bin/activate
(venv)$ cd /path/to/p
(venv)$ python3 setup.py develop

在项目 s 的 PyCharm 中,import p 语句与消息错误没有名为 p 的模块。但是,当我在s 中运行脚本时,一切都很好,唯一的问题是 PyCharm IDE 抱怨找不到模块。我可以忍受这个,但它很烦人......

为什么会这样?它是 PyCharm 的东西还是与包装相关的东西? 请参阅下面的新闻


项目/包p具有以下结构:

p/
|
+- p/
|  |
|  +- __init__.py
|  +- other subpackages, modules, etc.
+- setup.py
+- README, DESCRIPTION, setup.cfg, etc.

当我将 PyCharm 项目 p 配置为存在于自己的 virtualenv 中并以开发模式安装在那里时,一切正常。


新闻

这个问题在 PyCharm 5.0.4 中仍然存在。但是,我设法解决了它。

由于某些原因,我不得不从 pypi 安装另一个包。我是通过 PyCharm 完成的,方法是转到 File -> Settings -> Project: -> Project Interpreter,点击绿色的 +,找到包并按下 Install Package 按钮。安装后python3 setup.py develop安装的包被PyCharm很好识别。显然问题在于 PyCharm 没有与现实同步的缓存。

所以新的问题是,PyCharm 是否可以被告知更新其关于使用的 python 环境的缓存?

【问题讨论】:

  • 不错!是的,即使在 4.5.4 中,我也可以通过从 pycharm gui 卸载并重新安装随机选择的 pip 包来使其正常工作。

标签: python python-3.x pycharm setuptools


【解决方案1】:

在项目窗格中,保存 p 的目录需要标记为源。在以下位置可用:右键单击->“将目录标记为”->“源根目录”。

注意:如果在“编辑配置”(默认)中选中该选项的相应复选框,则此设置还将在从运行菜单执行期间将其添加到 PYTHONPATH。

【讨论】:

  • 你的意思是我应该打开项目s并将p的目录添加为另一个根目录?这两个项目是完全分开的(从 pycharm 的角度来看),唯一连接它们的是一个安装在另一个的 venv 中。所以pycharm真的不识别venv中的开发模式安装?
  • 当您无法从其他 .py 文件访问位于同一文件夹中的其他用户创建的模块时,此解决方案有效。赞成
【解决方案2】:

我也遇到了和你一样的问题。

好像pycharm不能识别setup.py直接安装的模块,但是可以识别pip安装的模块。 最后,我使用 pip install src_path,但每次修改源代码时都必须 pip install

【讨论】:

    【解决方案3】:

    对我有用的解决方法:

    在同一窗口(工作区)中打开 PyCharm 中的两个项目。现在打开设置窗口,在“Project -> Project Depencies”下,您现在可以选择项目s 依赖于项目p。导入和自动完成现在可以正常工作了。

    【讨论】:

    • 这是在 Pycharm Pro 2020.3 上唯一对我有用的东西
    【解决方案4】:

    从 Pycharm 2016.1.4(专业版)开始,似乎打开一个不同的项目(例如通过 Open Recent)然后打开原来的项目会使 Pycharm 重新索引已安装的包,从而识别开发安装的包。

    这对我来说已经足够了。

    【讨论】:

    • ImportError: No module named contrib.tensorboard.plugins 上述步骤执行后仍继续存在。
    • @makcbe 如果您在运行代码时遇到实际错误,那是另一个问题。这个问题和答案只是关于 PyCharm 无法识别已安装的包。
    • 哇!这有效,即使其他答案没有
    【解决方案5】:

    我刚刚使用 Pycharm 安装了软件包,然后问题就解决了。

    【讨论】:

      【解决方案6】:

      让 PyC​​harm 识别我刚刚编写的模块中的一个类,我花了很长时间。

      问题在于 PyCharm 似乎默认不导入模块类路径,这需要两个单独修复才能更正。

      步骤 1

      右击模块名称,将其标记为“Source”:

      第 2 步

      由于某种原因,默认情况下,在 PyCharm 中,它实际上并没有将标记为“Sources Root”的目录添加到 Python 路径中。通过打开它来解决这个问题。

      专家补充

      请注意上图中的“启动脚本”。我假设手动将这些行添加到您的 Python 脚本中也会获得相同的结果。

      测试日期

      • Windows 10 x64。
      • PyCharm 社区版 2017.2.3。

      【讨论】:

      • 如果你尝试安装一个模块但你得到了 not egg file found 的错误,这很好用
      • 使用 ctrl+alt+s 打开步骤 2 中的对话框
      【解决方案7】:

      问题可能出在您的解释器路径上。检查解释器指向的位置。在大多数情况下,它是 ~/PycharmProjects/trials/venv/bin/python 这可能指向作为 Pycharm 的一部分安装的 python 浴

      将 python 的软链接更改为 /usr/bin/python 路径,一切正常

      【讨论】:

        【解决方案8】:

        解决方案

        • 转到设置->项目解释器
        • 单击轮框(设置齿轮图标)按钮。
        • 在下拉列表中,单击 Show all...。可用的解释器将显示在 Project Interpreters 对话框中。

        • 选择所需的解释器。

        • 在“项目解释器”对话框的工具栏中,单击按钮图标显示路径(最后一个选项)。所选解释器的现有路径显示在解释器路径对话框中。

        • 在此处添加您的包路径(您 pip 开发的包)。ex /home/../repo-name

        瞧!!你已准备好出发。

        说明
        每个项目都引用了一个解释器,您可以在 settings->project interpreter 中找到它。现在这个解释器使用一堆路径来寻找一个库。默认情况下,它有站点包和一堆其他路径。
        现在,由于您使用了 pip develop -epython setup.py develop,因此会创建一个指向您包的存储库的动态链接,而不是在 site-packages 目录中安装包。所以我们的包的源路径不在这里,我们需要做的就是将我们的源路径添加到interpreter's Paths中使其工作

        参考:

        1. https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000019690-PyCharm-not-recognize-development-library-
        2. https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-reloading-interpreter-paths.html

        【讨论】:

        • 这行得通!就我而言,PyCharm 根本没有获取由pyenv 创建的 virtualenv 的site-packages 目录;添加site-packages 目录手动修复了我的“缺少模块”问题。谢谢!!!
        猜你喜欢
        • 2015-09-22
        • 2021-11-19
        • 2017-05-16
        • 2016-11-05
        • 1970-01-01
        • 2022-08-08
        • 2020-08-08
        相关资源
        最近更新 更多