最近,我开始着手一个新的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
)时,我得到了相同的错误
我知道这可能是一件非常简单的事情,我做错了,但几个小时的谷歌搜索并没有解决问题。我不确定问题是否出在我如何设置项目或如何运行项目上,但任何帮助都将不胜感激
详情:
那么你是从
myappholder/myapp
跑来的?从myappfolder
运行或删除from myapp.X.X
中的第一级层次结构(myapp
)您应该在根文件夹(myappholder)中运行所有内容
您的目录结构如下:(当您在myappholder中时)
以更好的方式编写目录结构,如下所示:
长而全的解决方案
了解python导入是如何工作的。你似乎不太清楚
阅读这篇详细而精彩的文章:https://realpython.com/python-import/
您需要学习的概念:
用于测试应用程序的快速解决方案
打开终端并运行
python
(从项目的根目录)现在在这个交互式shell中,导入
myapp
并调用需要运行的函数公开cli
如果需要公开CLI,可以打包应用程序,使用^{} 或setuptools非常好
您可以定义一个命令行界面
例如,如果您正在使用诗歌,可以将其放在pyproject.toml中
现在,从终端运行
samplepy
将执行samplepy
包的cli
函数在
myappholder
中创建另一个main_app.py
文件,在此文件中从运行项目的myapp/main.py
调用函数/模块然后运行
main_app.py
脚本,它就可以工作了相关问题 更多 >
编程相关推荐