Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 恐怖和Django快把我逼疯了_Python_Django_Django Models_Importerror - Fatal编程技术网

Python 恐怖和Django快把我逼疯了

Python 恐怖和Django快把我逼疯了,python,django,django-models,importerror,Python,Django,Django Models,Importerror,好的,我有以下目录结构(这是一个django项目): 而这个代码就是不起作用。我得到一个错误: Traceback (most recent call last): File "scraper.py", line 14, in from project.app.models import ClassName ImportError: No module named project.app.models 回溯(最近一次呼叫最后一次): 文件“scraper.py”,第14行,在 从p

好的,我有以下目录结构(这是一个django项目):

而这个代码就是不起作用。我得到一个错误:

Traceback (most recent call last): File "scraper.py", line 14, in from project.app.models import ClassName ImportError: No module named project.app.models 回溯(最近一次呼叫最后一次): 文件“scraper.py”,第14行,在 从project.app.models导入类名 ImportError:没有名为project.app.models的模块
上面的代码过去是可以工作的,但在某个地方坏了,我非常困惑为什么我会有问题。在使用python2.5的雪豹上。

您不会指出
项目
是否位于
/home/userspace/Development/
中。我想是的

确保在
项目
中有一个名为
的文件(默认为空),在
应用程序
中有另一个名为
的文件

编辑:下一步尝试:启动脚本目录中的Python命令行,然后尝试以下操作:


import urllib2
import os
import sys
import time
import datetime
import re
import BeautifulSoup

sys.path.append('/home/userspace/Development/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'

from project.app.models import ClassName
import project
import project.app as app
import project.app.models as models
models.__dict__.keys()

它们都有用吗?如果是,最后一行的输出是什么?如果不是,谁先死?

哇哇哇哇。你不应该在任何应用程序代码中输入你的项目名称。您应该能够跨多个项目重用应用程序代码,而无需进行任何更改。Pinax在这方面做得非常好,我强烈建议您查看它,了解许多django最佳实践

import sys
sys.path.append ('/path/to/the/project')
from django.core.management import setup_environ
import settings
setup_environ(settings)

from app.models import MyModel
在这里,最糟糕的事情就是将绝对路径硬编码到应用程序或设置中。您不应该这样做,因为它将在部署期间中断,除非您执行一些
import local\u设置
hacking

如果必须访问项目根目录,请尝试pinax在settings.py中的功能

import os.path
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
问题是,看起来你正在尝试访问同一个应用程序中的模型模块,这很容易

要在同一目录中的scraper.py中导入models.py,只需使用
导入模型
导入模型作为app_模型
,如果您在scraper.py中已经有一些命名模型(例如django.db.models)。您熟悉Python模块约定吗

然而,最好的方法可能是坚持使用django成语,从。。。导入。。。声明:

from app import models

如果无法自动执行此操作,则说明您的settings.py中有问题。

您正确地知道project位于/home/userspace/Development中,并且两个文件夹中都有一个空的init.py。“导入project”不起作用。ImportError:没有名为“project”的模块,它是一个init.py(不是init.py,对此很抱歉)好的,我认为这是可行的。我之所以说“思考”,是因为所讨论的模型需要TineyMCE,而且它在一个问题上发牢骚:“ImportError:无法导入名称智能unicode”有可能准确地解释设置环境(设置)的功能吗?阅读了
django\core\management\\ uuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。设置操作系统环境['DJANGO\u设置\u模块]
;2.将
项目作为模块导入。如何导入
智能\u unicode
?是否可以在导入文件的dir或sys.path中找到具有该功能的模块?我已经找到了。痛苦的我在python2.5系统库和我的项目中安装了导入smart_unicode的库。一旦我解决了这个问题,一切都会好起来的!非常感谢!
from app import models