我安装了注册模块,将其添加到settings.py中。当我尝试运行syncdb时(%python sitename / manage.py syncdb --settings sitename.devsettings)
它给了我“错误:没有名为注册的模块”
在服务器上运行相同的设置(对所有内容使用相同的文件)。这发生在运行OS X的本地计算机上。
我检查了sys.path,列出了注册模块所在的路径,并且实际模块也就位。由于没有其他输出,我不知道如何进一步调试。可能导致这个问题的原因是什么?
答案 0 :(得分:23)
由于此页面在Google中排名很好,因此它似乎是一个可能有帮助的一般答案的好地方。有时,svn / git中的文件夹名称与settings.py中的文件夹名称不同 - 这是一个不谨慎的陷阱。
所以,如果INSTALLED_APPS
引用你的东西作为mywhatever.someapp,那么你可能希望settings.py位于“mywhatever”文件夹中,子文件夹“someapp”包含__init__.py
文件。
答案 1 :(得分:12)
你提到sys.path所以你可能已经尝试过这个,但这是我的问题,我相信有些人也会这样做。
打开命令提示符并输入(使用尾部斜杠):
export PYTHONPATH=pathto/myproject/
然后输入:
export DJANGO_SETTINGS_MODULE=settings
这允许我编辑settings.py文件以列出INSTALLED_APPS,如下所示:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'myapp',
'registration',
)
而不是:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'myproject.myapp',
'myproject.registration',
)
答案 2 :(得分:8)
只需在你的virtualenv
中执行此操作pip install django-registration
答案 3 :(得分:7)
registration
模型中可能存在Python错误。尝试启动shell并导入它们,实例化它们等等。
答案 4 :(得分:6)
我只是在settings.py文件中的'registration'条目后丢失了一个逗号。一旦我在'注册'后添加了逗号, Syncdb为我工作。
答案 5 :(得分:3)
我有这个问题。我已将应用程序保存在项目文件夹中(例如,与manage.py相同的文件夹),但在settings.py中的INSTALLED_APPS中引用了“projectname.appname”而不是“appname”。
答案 6 :(得分:3)
固定!我有同样的问题,我试图注册子模块,如:
project
organization
categories
在我的设置文件中,我添加了
> INSTALLED_APPS = (
> 'django.contrib.admin',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> ...
> 'organization.categories', )
在文件夹类别中生成模块时,您有 init .pyc 我将此文件复制到“organization”文件夹,然后执行以下命令: / p>
sudo python manage.py makemigrations
sudo ./manage.py syncdb
它的工作原理!
答案 7 :(得分:2)
在使用PIP按照文档安装后,我在SX上也使用了virtualenv。 我使用easy_install进行了另一次安装,之后,一切正常。
easy_install -Z django-registration
答案 8 :(得分:1)
确保您在installed_apps中有一个条目,并且您的应用中至少有4个文件。 init.py ,urls.py,models.py和views.py
答案 9 :(得分:0)
我的第一个猜测是,您尚未在'registration'
文件的installed apps
中添加settings.py
。
也许您在服务器上使用了不同的settings.py
(或localsettings.py
)。
答案 10 :(得分:0)
试试这个
1)将注册应用程序作为应用程序放入项目中
并执行syncdb
执行以下操作以找出确切的错误原因
1.go to you project directory
2.python manage.py dbshell
3.in shell
4.import registration
5.if you get error here which means your registration module is not
there on the python path (or) some problem in finding that one.
if it works then some other problem like improper compilation .............
答案 11 :(得分:0)
如果在Windows上和使用virtualenv时发生这种情况,可能是因为virtualenv。
在本地(非virtualenv)环境中安装该软件包,它应该可以工作。
我对django-crispy-forms有同样的问题。
答案 12 :(得分:0)
直到我们发现环境没有被激活,我才遇到这个问题。
检查您的Virtualenv是否已激活。如果没有,请在shell中运行
source .<enviroment name>/bin/activate
答案 13 :(得分:0)
当我在我的虚拟环境中安装django-registration时,我也遇到了同样的错误。 不知道它是如何工作的,但是当我将这个lib安装到主Python目录(而不是虚拟环境)时,错误就消失了。
也许这对某人有帮助。
答案 14 :(得分:0)
我遇到了这个问题,因为我搞砸了我的virtualenv。
我打开了两个窗口:
我已经在Windows计算机上将Django注册包成功安装到venv中:
$ . venv/Scripts/activate
$ pip install Django-registration-redux==2.0
但是我的服务器不在venv中,因此找不到该软件包。
停止服务器,在该窗口中输入venv,然后重新启动服务器,一切正常。