gpt4 book ai didi

python - django项目目录结构和python路径

转载 作者:太空狗 更新时间:2023-10-29 22:08:30 25 4
gpt4 key购买 nike

我正在尝试从一开始就为开发我的 django 项目获得最佳设置,但我无法让所有内容在目录结构中很好地发挥作用。我已经设置了 virtualenv(在这个例子中是 env),这样我就可以为每个 django 项目部署一个干净的空 python 环境。

基本结构如下:

/env/
/bin
/db <--- Django DB
/downloads
/lib
/static <--- Where css/imgs/js etc is served from
/project/ <--- Django root
/__init__.py
/settings.py
/manage.py
/appsfolder/
/appname/
/__init__.py
/models/
/__init__.py
/somemodel.py
/urls/
/__init__.py
/someurl.py
/views/
/__init__.py
/someview.py

这是基本布局;我希望每个项目都有一个应用程序目录,并且在每个应用程序中都有一个单独的模型、 View 和 url 文件夹。

我遇到的问题是 python 路径以及模块的处理方式。

在应用程序中,我不想在导入模型时引用项目,即我应该使用:

import appname.models.modelname

不是:

import projectname.models.modelname

有助于提高可重用性

在模型目录中,我有以下init.py

from model1 import ModelName1
from model2 import ModelName2
from model3 import ModelName3

__all__ = ['ModelName1', 'ModelName2', 'ModelName3']

但是当我尝试使用单独的 url 文件(在/appname/urls/urlfile.py 中)并导入模型时,如下所示:

from appname.models.somemodel import ModelName

我收到“找不到模块”错误。

同时:

from appsfolder.appname.models.somemodel import ModelName

工作正常

我认为这是因为应用程序不直接在 python 路径上,而是在一个名为 appsfolder 的子文件夹中,但我不确定如何解决这个问题,同时保持所有内容可重用和相关。

我知道一个解决方案是将所有应用程序直接放在 site-packages 下的 python 路径上,但我不太喜欢这个想法,因为我认为如果你使用 virtualenv,应用程序应该在项目中

最佳答案

您可以将以下内容放入您的 settings.py 以将您的 appsfolder 添加到您的 PYTHONPATH:

import os
import sys

PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'appsfolder'))

关于python - django项目目录结构和python路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3856891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com