在Django中更改项目名称

时间:2018-10-27 18:02:57

标签: python django

我使用Pycharm的重构>重命名将django项目的名称从oldname更改为newname。我遍历该项目,似乎到处都更改了名称。但是当我尝试运行服务器时,这就是我得到的,

Traceback (most recent call last):
  File "/Users/melissa/Dropbox/newname/manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/core/management/__init__.py", line 317, in execute
    settings.INSTALLED_APPS
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 56, in __getattr__
    self._setup(name)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 43, in _setup
    self._wrapped = Settings(settings_module)
  File "/Users/melissa/Dropbox/newname/env/lib/python3.7/site-packages/django/conf/__init__.py", line 106, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 965, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'oldname'

有人可以帮我吗?

14 个答案:

答案 0 :(得分:2)

确保您更改settings.py,wsgi.py和manage.py中的名称

答案 1 :(得分:2)

更改项目名称时出现相同的错误,问题是您正在使用PyCharm运行服务器,不是吗?希望您在Django支持下使用PyCharm创建了项目。首先,将以下设置添加到您的wsgi.pymanage.py文件中,

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oldname.settings')

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'newname.settings')

然后转到您的settings.py并更改以下设置,

ROOT_URLCONF = 'oldname.urls
WSGI_APPLICATION = 'oldname.wsgi.application'

ROOT_URLCONF = 'newname.urls
WSGI_APPLICATION = 'newname.wsgi.application'

如果您没有获得PyCharm的Django支持,请执行此解决方案,否则您将再次遇到相同的错误。您可以使用其他终端来尝试此操作,而无需获得PyCharm的Django支持并使用python manage.py runserver命令运行服务器。如果您的项目没有其他错误,则可以看到此解决方案正在运行。然后我意识到PyCharm的Django支持有问题,我提供的帮助仅适用于使用PyCharm的Django支持的人。

  1. 转到您的项目,然后单击“编辑配置设置”。

    Pycharm Project Configuration

  2. 您可以看到Environment变量仍然具有以前的值,只需单击角落的图标以编辑DJANGO_SETTINGS_MODULE变量。

    enter image description here

  3. 然后添加您的新项目名称newname,其中包含settings.py文件。

    enter image description here

就是这样。

答案 2 :(得分:1)

在一个主要的地方,Django应用程序获得其应用程序名称及其名称

myappname/apps.py

from django.apps import AppConfig


class StorefrontConfig(AppConfig):
    name = 'myappname'

然后在settings.py中可以找到

INSTALLED_APPS = [
    'myappname',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

]

一旦您更改了应用程序的名称,就想在settings.pyapps.py中进行更改

答案 3 :(得分:1)

我有一个与Django 2.2完美兼容的解决方案。您已将旧项目重命名为示例django_master。然后您需要更改文件列表:

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'django_master.settings')

application = get_wsgi_application()

## django_master.settings

settings.py

#line 54 

ROOT_URLCONF = 'django_master.urls'

#line 72 django 2.2 default code

WSGI_APPLICATION = 'django_master.wsgi.application'

这三项更改之后,您的项目现在运行python mange.py runserver

如果仍然无法正常工作,请在项目目录中找到旧项目名称:

enter image description here

希望有帮助吗?

答案 4 :(得分:1)

创建一个新项目,而不是通过所有步骤更改项目。在没有配置数据库的项目上,在MacOS上使用PyCharm,这对我有用。

  • 使用新项目名称创建新目录
  • 在PyCharm中,在您刚创建的目录中使用新项目名称创建一个新的Django项目
  • 从旧项目复制您的应用
  • 使用您在旧目录中所做的更改来更新项目目录中的urls.py。您只需将其复制到项目中就可以摆脱。做一个文件比较以确保
  • 使用对旧设置所做的更改来更新settings.py。由于使用了新的项目名称,因此无法使用副本
  • 复制PyCharm应用程序首选项/文件查看器。我所有其他的PyCharm偏好设置似乎对所有PyCharm项目都是全局的。

该方法不仅易于执行,而且不会影响您现有的项目。如果它不起作用,则将其删除。

答案 5 :(得分:0)

在“运行/调试配置”,“环境”和“环境变量”下查找。可能在其中之一中找到了旧名称。

答案 6 :(得分:0)

在这里张贴,以防其他人像我一样健忘。

我有同样的问题,不是我:

解决方案只是保存使用查找和替换后在“文本编辑器”中打开的所有文件。

答案 7 :(得分:0)

您还需要更改pycharm设置.iml和.xml引用,以确保您的项目可以读取和执行manage.py任务。

答案 8 :(得分:0)

您可以只运行此命令。例如,如果我想将old_project_name更改为new_project_name在我所在的路径中 let size = 21 let x = 70 let y = 60 let side = 0 path = new Path2D(); path.moveTo(x + size * Math.cos(0), y + size * Math.sin(0)); for (side; side < 7; side++) { path.lineTo(x + size * Math.cos(side * 2 * Math.PI / 6), y + size * Math.sin(side * 2 * Math.PI / 6)); }

答案 9 :(得分:0)

我正在使用VSCode,因为我只是在项目级别上搜索了我想要更改的名称,然后将其替换为另一个名称(我想要的新名称)!
它没有打h。

答案 10 :(得分:0)

我的项目中发生了同样的问题。我必须将project_old_app_name更改为project_new_app_name。当我使用Visual Studio代码将旧代码更改为新代码时,请替换所有方法。

我遇到了这个错误

 ...
    return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 994, in _gcd_import
      File "<frozen importlib._bootstrap>", line 971, in _find_and_load
      File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
    ModuleNotFoundError: No module named 'project_new_app_name' 

然后我意识到我必须将我的project_old_app_name的文件夹/目录应用名称更改为project_new_app_name,然后它才能工作。

注意:- 我遇到了表名不匹配的问题,因为它被命名为old_app_table_name。因此,在这种情况下(我使用了sqlite db),我不得不做python manage.py migrate并再次插入数据。或者,我们可以在sqlite浏览器中将所有old_app_name_tablenames更改为new_app_name_tablenames。

答案 11 :(得分:0)

我已经手动更改了项目名称。如果可以,请查看我的答案https://stackoverflow.com/a/63303738/9384511

答案 12 :(得分:0)

重命名项目时遇到了这个问题。原来,我已正确重命名了所有内容。只是我的环境保留了旧的环境变量,所以我不得不重置它。

因此,对于发现此问题并认为自己已将manage.pysettings.pywsgi.py等重命名为asgi.py的任何人:

运行env | grep DJANGO,并确保根本未设置DJANGO_SETTINGS_MODULE或将其设置为新值。这很可能是您的问题。

答案 13 :(得分:0)

实现此目的的最佳方法包括重命名wsgi.pyasgi.pysettings.py 和 {{1} 中所有出现的项目名称 } 文件。

我创建了一个简单的 Python script 来处理任何项目。这允许快速且无错误的过程。

只需将 manage.py 脚本放在 Django 项目的主文件夹中(与 rename.py 文件相同级别)并运行脚本。