我从 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
移动代码。.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 中执行此操作。