我正在开发一个Django应用,我想在其中将一些类/函数从generator.py导入到views.py中,以处理用户提交的输入。我的文件夹结构如下:
project/
models/
__init__.py
generator.py
web/
django/
__init__.py
settings.py
urls.py
wsgi.py
django_app
__init__.py
views.py
etc.
在views.py内部,我有
from ...models.generator import Generator
当我尝试运行服务器时,我得到的是:
ValueError: attempted relative import beyond top-level package
我已经看到很多答案,但是大多数答案都是关于操纵sys.path或更改PYTHONPATH的。我不确定怎么做以及在哪里做,因为我是Django的新手。
有人可以准确地告诉我要运行哪些命令以完成导入吗?
答案 0 :(得分:0)
python的导入基于sys.path
,并且不能在顶级目录之外。 More information。
这意味着,如果您在BASE_DIR
中附加sys.path
路径的顶部,则可以导入。但这是一个棘手的方法。
def import_function():
import sys
sys.path.append(os.path.dirname(BASE_DIR))
module = __import__('models.generator') # import code
sys.path.pop()
return module
g_module = import_function()
g_module.Generator