Django ImportError:无法将名称导入\u类

Django ImportError:无法将名称导入\u类,django,ipython,pythonanywhere,Django,Ipython,Pythonanywhere,我有一个django网站,托管在pythonanywhere.com上。在该站点上,我可以创建Bash控制台或iPython控制台 我希望能够做到这一点: 从我的\u模块导入\u类 a_class.object.all() a_class.object.filter(some_属性=True) 如果我试图在iPython conosle中运行此操作,则会出现错误:ImportError:cannotimportname a_class 解释可能很简单,我还在学习。。。我找到的答案是关于第三方模

我有一个django网站,托管在pythonanywhere.com上。在该站点上,我可以创建Bash控制台或iPython控制台

我希望能够做到这一点:

从我的\u模块导入\u类
a_class.object.all()
a_class.object.filter(some_属性=True)

如果我试图在iPython conosle中运行此操作,则会出现错误:
ImportError:cannotimportname a_class

解释可能很简单,我还在学习。。。我找到的答案是关于第三方模块的,但这是我创建的,我不知道为什么它不能导入。如果我没有从…导入
,我会得到一个错误,
a_class
未按预期定义

编辑

这是my settings.py文件:

# Application definition

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'accueil',
    'a_class',
)

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

ROOT_URLCONF = 'my_site.urls'

WSGI_APPLICATION = 'my_site.wsgi.application'


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.7/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = '/static/'

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
    '/var/www/static/',
)

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates'),
)
我的目录结构是:

── a_类
│   ├── __初始值
│   ├── 管理员
│   ├── forms.py
│   ├── 迁移
│   │   ├── 0001_首字母.py
│   │   ├── 0016_auto_20150407_0057.py
│   │   ├── __初始值
│   ├── models.py
│   ├── 模板
│   │   └── a_类
│   │       ├── home.html
│   ├── tests.py
│   ├── url.py
│   └── views.py
├── manage.py
├── 我的网站
│   ├── __初始值
│   ├── 设置.py
│   ├── url.py
│   └── wsgi.py

类通常位于模型中,有几种方法可以导入它们,首先:

from django.apps import apps

MyModel = apps.get_model('app_label', 'ModelName')  # Both strings 
如果它存储在models.py中,您也可以

from myapp.models import Class  # Make sure the app has an __init__.py to be seen 

此外,要使用./manage shell,您需要安装并迁移应用程序。

既然您提到了,答案可能很简单:您的模块文件夹中是否有manditory
\uuuuu init\uuuuuuuuuuuy.py
文件?导入是否在非交互式shell中工作(如果是:是否使用线程模块,以及哪个模块?)?模块是否在iPython可以找到的某个地方(在app文件夹中/在PYTHONPATH的某个地方)?是的,init.py在那里。我可以从网站的其他地方导入Those类,这是否回答了第二个问题?iPython是从项目的根文件夹中启动的。与您在这里显示的文件结构相关的my_模块在哪里?我应该在我的帖子中提到我想要运行的命令,它们在PyCharm中运行良好。GilesTomas对下面答案的评论帮助我获得了所需的控制台。谢谢你的帮助!谢谢你的回答。老实说,当你说应用程序需要安装和迁移时,我不是你的意思。您的第一个解决方案给了我这个错误:
AppRegistryNotReady:模型尚未加载。
,而第二个解决方案给了我一个
配置不正确:请求设置缓存,但未配置设置。
错误。(是的,我的模型存储在models.py中)。希望它能澄清这个问题!在settings.py的INSTALLED_APPS下,将应用名称添加为字符串。然后在shell运行中./manage.py makemigrations&&./manage.py migrate,如果您刚刚开始,请遵循Django轮询教程。该应用程序列在INSTALLED_APPS中,我随后运行了这两个命令。请发布您的settings.py和目录结构,以确保您了解Mikeec3提到的一个特定内容——如果您想访问Django模型,您需要使用
/manage.py shell
启动IPython。从PythonAnywhere“Consoles”页面启动的常规IPython控制台将不起作用,从Bash控制台运行“IPython”也不会起作用。您需要启动一个Bash控制台,
cd
到Django项目的根目录,然后运行
/manage.py shell
。对不起,如果你已经很清楚了,我只是觉得需要加下划线。