我已经更改了Django中应用程序的名称,重命名了它的文件夹、导入和所有引用(模板/索引).但是现在当我try 运行python manage.py runserver
时收到这个错误
Error: Could not import settings 'nameofmynewapp.settings' (Is it on sys.path?): No module named settings
如何调试和解决此错误?有线索吗?
我已经更改了Django中应用程序的名称,重命名了它的文件夹、导入和所有引用(模板/索引).但是现在当我try 运行python manage.py runserver
时收到这个错误
Error: Could not import settings 'nameofmynewapp.settings' (Is it on sys.path?): No module named settings
如何调试和解决此错误?有线索吗?
按照以下步骤在Django中更改应用程序的名称:
views.py
、urls.py
、manage.py
和settings.py
文件.django_content_type
:UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName
.对于mysql,我认为也是一样的(正如@null_radix所提到的).django_migrations
表以避免重新运行以前的迁移:UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'
.Note:对于Django 1.8+是否需要此步骤,存在一些争论(在 comments 中);如果有人确实知道,请在这里更新.models.py
元类中有app_name
个列出,请确保将其重命名(由@will提及).static
或templates
个文件夹,你还需要重命名这些文件夹.例如,将old_app/static/old_app
重命名为new_app/static/new_app
.models
,您需要更改DB中的django_content_type.name
条目.对于PostgreSQL,请使用UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
__pycache__/
文件夹必须被删除,否则你会得到EOFError: marshal data too short when trying to run the server
.由@Serhii Kushchenko提到Meta point (If using virtualenv):值得注意的是,如果您要重命名包含您的viralenv的目录,您的env中可能会有几个文件包含绝对路径,并且也需要更新.如果您收到诸如ImportError: No module named ...
之类的错误,这可能是罪魁祸首.(感谢@danyamachine提供了这一点).
Other references:您可能还想参考以下链接以获得更完整的图片: