PyCharm无法识别在开发模式下安装的模块

zeg*_*jan 32 python setuptools pycharm python-3.x

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

Project s(在PyCharm中)被配置为使用专用的virtualenv,让我们称之为venv.

我遇到的问题如下:当我像这样安装项目(包)pvenv:

$ source /path/to/venv/bin/activate
(venv)$ cd /path/to/p
(venv)$ python3 setup.py develop
Run Code Online (Sandbox Code Playgroud)

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

为什么会这样?它是PyCharm的东西还是包装相关的东西?见下面的新闻.


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

p/
|
+- p/
|  |
|  +- __init__.py
|  +- other subpackages, modules, etc.
+- setup.py
+- README, DESCRIPTION, setup.cfg, etc.
Run Code Online (Sandbox Code Playgroud)

当我将PyCharm项目配置为p自己的virtualenv并在开发模式下安装时,一切正常.


新闻

PyCharm 5.0.4中仍然存在此问题.但是,我成功地解决了它.

出于某些原因,我不得不从pypi安装另一个包.我通过PyCharm进入文件 - >设置 - >项目: - >项目解释器,点击绿色+,找到包并按下安装包按钮.安装完成后python3 setup.py develop,PyCharm会很好地识别安装的软件包.显然问题是PyCharm没有一些缓存与现实同步.

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

zeg*_*jan 22

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

这对我来说已经足够了.


小智 18

在项目窗格中,保存p的目录需要标记为source.可用于:右键单击 - >"将目录标记为" - >"源根".

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

  • 你的意思是我应该打开项目`s`并将`p`目录添加为另一个根目录?这两个项目是完全分离的(从 pycharm 的角度来看),唯一将它们连接起来的是一个安装在另一个的 venv 中。所以pycharm真的不识别venv中的开发模式安装吗? (2认同)

Con*_*ngo 15

我有一段时间让PyCharm认出我刚刚编写的模块中的一个类.

问题是PyCharm似乎默认不导入模块类路径,这需要两个单独的修复来纠正.

步骤1

右键单击模块名称,并将其标记为"Source":

在此输入图像描述

第2步

出于某种原因,默认情况下,在PyCharm中,它实际上并没有将标记为"Sources Root"的目录添加到Python路径中.通过打开它来修复此问题.

在此输入图像描述

专家额外

请注意上图中的"起始脚本".我假设手动将这些行添加到Python脚本也会获得相同的结果.

经过测试

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


小智 10

解决方案

  • 转到settings->project interpreter
  • 单击轮框(设置齿轮图标)按钮。
  • 在下拉列表中,单击“全部显示...”。可用的解释器显示在“项目解释器”对话框中。

  • 选择所需的解释器。

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

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

瞧!!你已准备好出发。

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

参考:

  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