2016-02-29 138 views
0

我有一个django项目,我需要访问我的文件夹中的django主项目文件夹下的一些模型。让我说明一下。Python相对导入错误?

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

这是例如文件夹结构,我需要进口一些类主要应用的模型内的helper.py.I尝试这些:

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

,我也尝试添加一个__init__.py文件主要的项目文件夹:

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

总是错误2类型:

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

我需要解决方案,需要很好的解释为什么我总是失败。谢谢你这么多人。

回答

1

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

+0

对不起主文件夹中已经有__init__.py cuz它是一个app.but我需要一些编辑我的问题,或者我可以在这里写我试图通过$ python helper.py –

0

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

所以,如果你想指定一个像main.models这样的路径,它应该包含src目录。

请注意,您还可以使用sys.path阵列进行管理。

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

要从项目的settings.py文件添加路径,你可以这样做:例如,如果你在同一级别的目录包含settings.py一个lib目录

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

文件。

+0

在终端上使用helper.py我觉得你是goint回答我:)。我在终端上写了$ echo $ PYTHONPATH并没有显示任何内容。我可以在里面指定文件夹,或者我想知道sys.path如何用于包。 –

+0

让我说,我现在添加“/ home/me/desktop/test”到$ PYTHONPATH.so那是什么意思? –

+0

'$ PYTHONPATH'并不总是设置也不需要。您是否尝试在其中一个Python脚本内打印'sys.path'? – Dric512

0

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

如果mainlib处于同一水平manage.py

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

你只需要:

from main.models import exampleClass 
+0

谢谢,但lib不是只包含我的帮助函数的应用程序文件夹。 –

+0

@sj_magento试试看。 – Gocht