PyCharm,从项目文件夹解析库

时间:2019-04-11 10:28:54

标签: python pycharm

我有一个普通的库,以pypi表示。在其中,有一种技巧可以解决我们导入的模块中的名称。 如果我将其安装到Python文件夹中,则PyCharm会以一种常见的方式来解析它,构建一个框架,然后我会自动完成它。 但是在我们的项目中,我们将用过的库保存在项目文件夹中,而PyCHarm不会读取和处理该库。为此,我提出了“未解决的参考文献”检查清单和红色波浪线。

如何使PyCharm解析项目文件夹中的库?

示例:

MyProjectRoot
    -- external_libs
        --six.py

我写的时候:

from external_libs.six.moves import range

PyCharm用rea波浪线标记为“已移动”黄色和“范围”。

2 个答案:

答案 0 :(得分:1)

documentationsix软件包:

  

注意:为了导入表格:

     

from six.moves.cPickle import loads work

     

六个地方特别代理   sys.modules中的对象。这些代理懒惰地加载底层   提取属性时的模块。

因此,PyCharm中的基本路径解析器无法轻松找到该包和其他使用相同方法导入的模块的实际路径。


为了克服此问题,PyCharm使用Typeshed Stubs

  

Typeshed是一组带有标准注释的文件   Python库和各种软件包。打字存根提供   Python类,函数和模块定义的定义   输入提示。 PyCharm使用此信息来更好地完成代码,   检查和其他代码洞察功能。

可以在它们的official repository中找到的带格式的存根用作查找表。例如,如果您要从range中寻找six.moves函数,而该函数只是内置range函数的别名,他们将通过指定在以下情况下帮助PyCharm知道如何解决该问题:您键入from six.moves import range,应将其解析为类似from builtins import range的内容。


您可以按照PyCharm documentation来覆盖捆绑的分页存根。

示例: 如果您想使用six软件包,并且具有这样的文件夹结构:

six_reproduce
    |─── main.py
    │
    │
    ├───external_libs
    │   |────six.py

转到原始的排版存储库,下载所需的存根。 对于python 3,可以在 here 中找到six库的存根。

下载文件夹并将其放在external_libs下,这样您的项目结构将变为:

six_reproduce
    |─── main.py
    │
    │
    ├─── external_libs
    │   |──── six
    │   │      |──── moves
    │   │      │
    │   │      |──── __init__.pyi
    │   │
    │   |──── six.py

PyCharm现在应该可以解决您的进口货了!

答案 1 :(得分:0)

尝试一下:

import sys
sys.path.append("external_libs")
import six