PyCharm 添加 Python 额外路径:缺少导入解析的自定义模块路径

问题描述 投票:0回答:1

我从 VSCode 转向 PyCharm,因为我的团队希望我使用 PyCharm。这是一个硬性的要求。

在我当前的Python项目中,我有一个Python代码,我们没有提交所有生成的(grpc)Python代码。为了生成它,假设我们运行如下命令:

bazel build //...

该项目仅在您使用 bazel 时才会运行,但请耐心等待。这应该不是一个复杂的问题。

目录如下所示:

- workspaceFolder (source root)
|-- models
  |-- dao_user.py
  |-- dao_accounts.py
|-- database
  |-- transaction.py
  |-- google_spanner.py
|-- service
  |-- grpc_user_svc.py
...
|-- .bazel-bin (auto-generated by bazel build)
  |-- api
    |-- protos
      |-- awesome_pb2.py
      |-- awesome_service_pb2.py
      |-- authentication.py

但是,这会将生成的代码输出到

${workspaceFolder}/.bazel-bin/
内的不同文件夹中。当然,这应该会在 PyCharm 解释器代码中产生一个问题,我们会丢失一些导入,因为 python 代码不在工作区文件夹(也称为项目源根目录)中。

# Pycharm has issues finding this modules
from api.protos.authentication import AuthenticationRequest 
from api.protos import awesome_pb2 as api_awersome_pb2
from api.protos import awesome_service_pb2

我的问题是,如何告诉 PyCharm 从

.bazel-bin
文件夹中获取上述导入进行分析?

  • 我不想从
    .bazel-bin
    移动代码。
  • 我希望 PyCharm 解释器能够理解来自
    .bazel-bin/
  • 的额外源代码路径

我很确定这是可能的。我已经让它在 VSCode 中工作了。 我可以通过以下配置设置在 VSCode 中执行此操作:

// .vscode/settings.json
{ 
 "python.analysis.extraPaths": [
    "${workspaceFolder}/bazel-bin/api",
    "${workspaceFolder}/bazel-bin/cloud",
    "${workspaceFolder}/bazel-bin/storage"
  ],
  "python.linting.pylintPath": "pylint",
  "python.linting.pydocstyleEnabled": false,
  "python.linting.banditEnabled": false,
  "python.linting.flake8Enabled": false,
  "python.linting.prospectorEnabled": false,
  "python.languageServer": "Pylance",
  "python.analysis.autoImportCompletions": false,
}

我的团队也不知道如何在 PyCharm 中执行此操作。

python python-3.x pycharm bazel
1个回答
2
投票

有多种方法可以做到这一点。

  • 来源根(钝锤):

    如果您的项目结构如下:

    右键单击

    .bazel-bin
    文件夹 -> 将目录标记为 -> Sources Root,pycharm 会找到它:

  • 口译员路径:

    文件 -> 设置 -> 项目 -> Python 解释器 -> 下拉菜单 -> 显示全部 -> 显示解释器路径 -> + -> 添加

    .bazel-bin
    目录:

在所有子窗口中一直单击“确定”,Pycharm 现在应该可以找到您的文件。

© www.soinside.com 2019 - 2024. All rights reserved.