Python 如何从Django中的子目录导入包
我知道有很多类似的问题和答案,但我真的做不到。 我将Python 如何从Django中的子目录导入包,python,django,Python,Django,我知道有很多类似的问题和答案,但我真的做不到。 我将views.py、models.py和forms.py拆分为相应文件夹中的几个文件。因此,文件夹结构如下所示: myapp \__init__.py \admin.py \forms \__init__.py \my_forms.py \views \__init__.py \my_views.py \models \__init__.py \my_models.p
views.py
、models.py
和forms.py
拆分为相应文件夹中的几个文件。因此,文件夹结构如下所示:
myapp
\__init__.py
\admin.py
\forms
\__init__.py
\my_forms.py
\views
\__init__.py
\my_views.py
\models
\__init__.py
\my_models.py
在相应的\uuuu init\uuuuu.py
文件中,我添加了:
from my_file import *
其中,myu文件
对应于myu表单
,myu视图
和myu模型
现在我正试图从my_views.py
导入表单:
from myapp.forms import MyForm
因此,我得到以下错误:
没有名为forms的模块
有人能指出我做错了什么吗?我找到了问题所在。那是我愚蠢的错误。实际上,目录结构是这样的:
myapp
|--__init__.py
|--admin.py
|--forms
|--__init__.py
|--myapp.py
|--views
|--__init__.py
|--myapp.py
|--models
|--__init__.py
|--myapp.py
也就是说,我将表单、视图和模型文件命名为与应用程序名称相同的名称(例如,应用程序名称为“contacts”,模型文件为“contacts.py”)。这使我找到了问题中的错误
因此,不要将内部文件命名为与应用程序相同的名称。尽量避免使用相同的名称;)
非常感谢所有试图提供帮助的人。PythonMyApp在PYTHONPATH中的完整路径,正如YardenST建议的那样,感谢各位的回复。不,我没有向PYTHONPATH手动添加任何内容。我应该手动将模块添加到python路径吗?我只是想将它们用作普通的python模块。请给我一个链接,a可以在这里阅读django和python路径中的模块吗?myapps中的
是否会导入表单
,然后使用表单。MyForm
而不仅仅是MyForm
也会给出一个错误?@MattiasNilsson,是的,它还提供了一个错误。我尝试了不同的变体:来自myapp.my_表单导入MyForm
,来自myproj.myapp.my_表单导入MyForm
,来自my_表单导入MyForm
。我甚至将my_forms.py
复制到/myapp/my_forms1.py
中,并尝试从myapp.my_forms1导入MyForm,从/myapp/views/my_views.py
文件夹中导入MyForm,但这没有任何帮助,尽管当my_views.py
正好位于/myapp
文件夹中时它起作用。