我有一个这样的文件夹 struct :

workspaceFolder
  subproject1
    src
      subproject1

  subjproject2
    src
      subproject2

  etc..

当我错过一个导入时,它会建议一个自动导入的路径,但它总是看起来像这样:from subproject1.src.subproject1.bla import bla,而我希望它看起来像from subproject1.bla import bla.

如果您手动键入导入并为它们编制索引,似乎可以正确地找到文件.

我在.env文件中设置了PYTHONPATH.PYTHONPATH看起来像"workspaceFolder\subproject1\src\;workspaceFolder\subproject1\src\".

我在settings.json中有以下可能相关的条目

"python.analysis.autoSearchPaths": true,
"python.analysis.autoImportCompletions": true,
"python.envFile": "${workspaceFolder}/.env",

推荐答案

如果您使用Poetry作为构建后端,您可以在您的pyproject.toml文件中添加以下内容,以使您的subproject*个包可以自动发现:

packages = [
    { from = "subproject1/src", include = "subproject1" },
    { from = "subproject2/src", include = "subproject2" },
    # ...
]

在配置了pyproject.toml文件之后,只需从项目的根目录运行pip install -e .(如果您更一般地使用诗歌,则运行poetry install).

然后,每个subproject*/src目录将被放置在当前解释器的导入路径上(假设默认的可编辑安装).搜索当前解释器的导入路径的任何和所有工具也将能够发现它们(包括VS代码,以及静态分析工具,如mypy等).

请注意,如果您只使用Pory作为PEP-517构建后端,则文档中的每个步骤都必须do notinstall the full tool.仅仅包括

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

在你的pyproject.toml美元里就足够了.每次生成项目时,poetry-core都会安装到隔离的临时虚拟环境中.

Python-3.x相关问答推荐

IPython似乎已安装但无法运行

如何有效地计算Kernel/Matrix

Django将任何查询显示为html表格

如何使用TensorFlow Keras子类化来构建和训练模型

给定panda代码的分组和百分比分布pyspark等价

Python根据条件从多行读取值

在 Python 中实现 COM 接口

使用 Python 在特定组的列中设置上限

如何使用 django rest 框架在 self forienkey 中删除多达 n 种类型的数据?

聚合(aggregate)为最多包含两个元素的列表

命名元组内命名元组的 Python 语法

python 3集合中的Discard()和Remove()函数有什么区别

二进制文件的 Python 3 和 base64 编码

错误:预期语句,发现 py:Dedent

在数据类中创建类变量的正确方法

Python3 mysqlclient-1.3.6(又名 PyMySQL)的用法?

如何通过命令行将数组传递给python

Python3 的超级和理解-> TypeError?

tkinter TclError:错误的文件类型使用 askopenfilename

Beautifulsoup 的单元测试失败