繁体   English   中英

Python相对导入错误?

[英]Python relative import error?

我有一个django项目,我需要访问django主项目文件夹下的文件夹中的一些模型。让我举例说明。

    src\
        main\
            urls.py
            models.py
            view.py
        lib\
            __init__.py
            helper.py

这是示例文件夹结构,我需要在helper.py中导入一些主要的应用程序模型,我尝试了以下方法:

           from main.models import exampleClass
           from ..main.models import exampleClass

我还尝试在主项目文件夹中添加__init__.py文件:

           src\
               ...
               main\
               lib\
               __init__.py

总是出错2种:

1)ValueError:相对导入错误2)没有模块名称。

我需要解决方案,并且需要很好的解释为什么我总是失败。非常感谢你们。

main文件夹而不是src文件夹中添加__init__.py 然后尝试使用from main.models import exampleClass 它应该正在工作。

您如何设置$ PYTHONPATH变量? 搜索路径是相对于此环境变量的。

因此,如果要指定类似main.models的路径,则该路径应包含src目录。

请注意,您也可以使用sys.path数组进行管理。

Django通常将所有应用程序添加到sys.path 您可以尝试将其打印在settings.py文件中以获取想法。

要从项目的settings.py文件添加路径,您可以执行以下操作:

import os.path
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(os.path.join(BASE_DIR, "../lib"))

例如,如果您的lib目录与包含settings.py文件的目录处于同一级别。

如果mainlib都是django的应用程序,并且您已在INSTALLED_APPS设置中注册它们,则不需要..

如果mainlibmanage.py处于同一级别:

src/
    main/
        ...
    lib/
        ...
    manage.py
    ...

您只需要:

from main.models import exampleClass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM