首页 > 解决方案 > 如何在自己的包中使用自己的 Python 包?ModuleNotFoundError:没有命名的模块

问题描述

我使用以下结构创建了一些代码:

├── project
|  ├── .vscode
|  |   └── settings.json
|  ├── packages
|  |   ├── __init__.py
|  |   ├── module_one.py
|  |   └── module_two.py
|  └── main.py

module_one 内容

def functionModuleOne():
    print('functionModuleOne')

module_two 内容

import module_one
module_one.functionModuleOne()

def functionModuleTWO():
    print('functionModuleTWO')

主要内容

from package import module_two

关键是我试图在“module_two”中导入“module_one”。我遇到了一些错误,因为显然我应该在 .vscode/settings.json 中指定模块的路径。所以,我做到了

json里面有什么:

{
    "python.analysis.extraPaths": [".\\package"]
}

然后,它显然工作得很好。我执行了文件“module_two.py”并且没有出现错误。

但是,当我尝试执行文件“main.py”时,出现以下错误: ModuleNotFoundError: No module named "module_one"

我需要这个结构,因为“module_two”需要从“module_one”导入函数,“main”需要从“module_two”导入函数。

我真的不知道发生了什么。我尝试了一切并在网上搜索它,但没有好的结果。

如果你们中的一些人能帮助我,我会很高兴。

标签: pythonvisual-studio-codepackagepylance

解决方案


原因是在导入其他文件中的方法时,VS Code 默认从导入文件的父文件夹开始搜索。显然,在文件“main.py”中,根据“import module_one”找不到文件“module_one”。

您可以参考以下方法: 请在文件“module_two”中使用以下代码:

import sys 
sys.path.append("./")

from emo.module_one import functionModuleOne
functionModuleOne()

def functionModuleTWO():
    print('functionModuleTWO')

" from emo.module_one import functionModuleOne": ("main.py" 可以根据这个路径找到"module_one"。),

" sys.path.append("./")":将文件“module_one”的路径添加到“module_two”的路径中。

运行 main.py:

在此处输入图像描述


推荐阅读