python - 如何在自己的包中使用自己的 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”导入函数。
我真的不知道发生了什么。我尝试了一切并在网上搜索它,但没有好的结果。
如果你们中的一些人能帮助我,我会很高兴。
解决方案
原因是在导入其他文件中的方法时,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:
推荐阅读
- c# - 如何根据更新的代码分析错误在 Visual Studio 中获取错误?
- swift - 如何在 SwiftUI 拖放中在 NSItemProvider 中传递不仅仅是一个字符串
- javascript - 为什么在旧的 JavaScript 开发人员中将“this”称为“_this”
- python - 如何控制运行程序的 python 版本?
- javascript - 使用自定义时间格式作为输入的时刻 js 时间格式
- python - Rasterio 为每个波段设置一个唯一的名称
- angular - NPM 安装问题
- python - 如何使用 Python 创建 DAG(用于基于依赖项的任务执行。)
- sql - 每天选择 1 行
- python - 在 Python 中处理条件导入的简洁代码方法