[英]Changing a project name in django
我使用 Pycharm 的 refactor > rename 將 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'
有人可以幫我弄這個嗎?
更改項目名稱時出現同樣的錯誤,問題是您正在使用PyCharm運行服務器,不是嗎? 希望您使用帶有 Django 支持的PyCharm創建了您的項目。 首先將以下設置添加到您的wsgi.py
、 asgi.py
和manage.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 Support 有問題,我提供的幫助僅適用於使用PyCharm的 Django Support 的人。
轉到您的項目並單擊編輯配置設置。
您可以看到 Environment 變量仍然具有以前的值,只需單擊角落的圖標即可編輯DJANGO_SETTINGS_MODULE
變量。
然后添加您的新項目名稱newname
,其中包含settings.py
文件。
而已。
確保更改 settings.py 、 wsgi.py 和 manage.py 中的名稱
有一個 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.py
和apps.py
中進行更改
查看“運行/調試配置”、“環境”和“環境變量”下的內容。舊名稱可能在其中之一中找到。
我有一個 Django 2.2 完美運行的解決方案。 您已將舊項目重命名為 example 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
設置.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
如果仍然無法在項目目錄中找到舊項目名稱:
希望能幫助到你?
無需通過所有步驟來更改項目,只需創建一個新項目即可。 這對我在沒有配置數據庫的項目上使用 MacOS 上的 PyCharm 很有用。
除了更容易做之外,該方法不會觸及您現有的項目。 如果它不起作用,只需將其刪除。
實現這一點的最佳方法是重命名wsgi.py
、 asgi.py
、 settings.py
和manage.py
文件中所有出現的項目名稱。
我創建了一個簡單的Python 腳本來處理任何項目。 這允許快速且無錯誤的過程。
只需將rename.py
腳本放在 Django 項目的主文件夾(與manage.py
文件相同的級別)並運行該腳本。
如果有人像我一樣健忘,請在此處發布。
我有同樣的問題,不是我:
解決的辦法是保存使用查找和替換后在“文本編輯器”中打開的所有文件。
您還需要更改 pycharm 設置 .iml 和 .xml 引用,以確保您的項目可以讀取和執行 manage.py 任務。
你可以運行這個命令。 例如,如果我想將 old_project_name 更改為 new_project_name 在我是python manage.py rename old_project new new_project
的路徑中
我正在使用 VSCode,因為我只是在項目級別上搜索了我想要更改的名稱並將其替換為另一個名稱(我想要的新名稱)!。
它沒有打嗝。
我的項目中也發生了同樣的問題。 我不得不將我的 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。
我已經手動更改了項目名稱。 如果沒問題,請查看我的答案https://stackoverflow.com/a/63303738/9384511
當我重命名我的項目時,我剛剛遇到了這個問題。 原來,我正確地重命名了所有內容。 只是我的環境保留了舊的環境變量,所以我不得不重置它。
因此,對於任何發現此問題並認為他們已重命名manage.py
、所有settings.py
、 wsgi.py
和asgi.py
等的人:
運行env | grep DJANGO
env | grep DJANGO
,並確保DJANGO_SETTINGS_MODULE
根本沒有設置,或者設置為新值。 這很可能是您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.