为什么Python找不到我导入的文件?

2024-09-30 16:32:15 发布

您现在位置:Python中文网/ 问答频道 /正文

最近,我开始着手一个新的Python项目,我想我可能会正确地组织它,而不是像通常那样将所有代码放在一个目录中。我使用this tutorial为我的项目创建了如下文件夹结构:

myappholder/
myappholder/README.md
myappholder/LICENSE.txt
myappholder/.gitignore
myappholder/myapp/
myappholder/myapp/__init__.py (empty file)
myappholder/myapp/main.py
myappholder/myapp/config.py
myappholder/myapp/subdir
myappholder/myapp/subdir/__init__.py (empty file)
myappholder/myapp/subdir/helper.py

{}的内容:

from myapp.subdir.helper import sayHello

{}的内容:

from myapp.config import SOME_CONST

def sayHello():
    print(SOME_CONST)

{}的内容:

SOME_CONST = 'Hello world'

当运行python main.py(从myappholder/myapp)时,我得到了这个错误(为了简洁起见删除了跟踪):ModuleNotFoundError: No module named 'myapp。当运行python -m main(从myappholder/myapp)时,我得到了相同的错误

我知道这可能是一件非常简单的事情,我做错了,但几个小时的谷歌搜索并没有解决问题。我不确定问题是否出在我如何设置项目或如何运行项目上,但任何帮助都将不胜感激

详情:

  • 我正在Windows上运行Python 3.8
  • 我试图创建一个GUI应用程序,而不是一个库

Tags: 项目frompyhelperconfig内容initmain
3条回答

那么你是从myappholder/myapp跑来的?从myappfolder运行或删除from myapp.X.X中的第一级层次结构(myapp

您应该在根文件夹(myappholder)中运行所有内容

您的目录结构如下:(当您在myappholder中时)

以更好的方式编写目录结构,如下所示:

.
├── myapp
│   ├── config.py
│   ├── __init__.py
│   ├── main.py
│   └── subdir
│       ├── helper.py
│       └── __init__.py
└── README.md

长而全的解决方案

了解python导入是如何工作的。你似乎不太清楚

阅读这篇详细而精彩的文章:https://realpython.com/python-import/

您需要学习的概念:


用于测试应用程序的快速解决方案

打开终端并运行python(从项目的根目录)

现在在这个交互式shell中,导入myapp并调用需要运行的函数


公开cli

如果需要公开CLI,可以打包应用程序,使用^{}setuptools非常好

您可以定义一个命令行界面

例如,如果您正在使用诗歌,可以将其放在pyproject.toml中

[tool.poetry.scripts]
samplepy = 'samplepy:cli'

现在,从终端运行samplepy将执行samplepy包的cli函数

myappholder中创建另一个main_app.py文件,在此文件中从运行项目的myapp/main.py调用函数/模块

然后运行main_app.py脚本,它就可以工作了

相关问题 更多 >