django.setup() giving me ModuleNotFoundError: when ran in pycharm
django.setup() giving me ModuleNotFoundError: when ran in pycharm
我已经按照以下设置了一个 Django 项目和该项目的应用程序。
更改模型后,我可以进行迁移和迁移。
我可以 运行 服务器和管理页面按预期显示我的应用程序。
我能够 运行 python manage.py shell,在 shell.
中导入和操作我的模型
然而,当我尝试从另一个 python 文件(在 pycharm 中)导入我的模型时,我收到一条错误消息,指出找不到我的应用程序的模块。
OS:
Distributor ID: LinuxMint
Description: Linux Mint 19.3 Tricia
Release: 19.3
Codename: tricia
IDE
PyCharm 2020.2.3 (Community Edition)
Build #PC-202.7660.27, built on October 6, 2020
Runtime version: 11.0.8+10-b944.34 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.4.0-52-generic
GC: ParNew, ConcurrentMarkSweep
Memory: 1871M
Cores: 8
Non-Bundled Plugins: Statistic, com.alayouni.ansiHighlight, com.intellij.ideolog, org.toml.lang, ru.meanmail.plugin.requirements, com.jetbrains.plugins.ini4idea
Current Desktop: X-Cinnamon
Python:
python 3.6
Django
Django==3.1.3
我已经阅读了之前的相关问题:django-modulenotfounderror-no-module-named-restaurants and 但我认为我的问题有些不同。
我没有移动文件或更改文件夹名称,我真的尽可能按照教程进行保存(我什至从 django doc 重新创建了 exat poll 应用程序示例并得到了同样的错误)。
我想这与我的环境变量设置不正确有关,但我对这一切都是新手,我不完全了解我应该检查什么,我应该如何检查这些以及最后如何这些可以修复。因此,如果问题与环境变量有关,我将不胜感激。谢谢!
在 pycharm 中,我有几个用于该项目的存储库保存在一个文件夹中,我通常会打开包含 pycharm 中所有存储库的文件夹。
这里感兴趣的回购称为 'static_data' 并且它包含以下树:
├── backend
│ ├── manage.py
│ ├── static_data_app
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── migrations
│ │ │ └── 0001_initial.py
│ │ ├── models.py
│ │ ├── tests.py
│ │ ├── tools
│ │ │ ├── loading.py
│ │ │ ├── new_expiry.py
│ │ │ └── setup.py
│ │ ├── urls.py
│ │ └── views.py
│ └── static_data_project
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── __init__.py
├── README.md
└── test.py
我有设置
static_data_project/settings.py
INSTALLED_APPS = [
'static_data_app.apps.StaticDataAppConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
然后当我尝试 运行 static_data/test.py in pycharm 时,其中包含以下代码:
import os
import sys
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'static_data.backend.static_data_project.settings'
django.setup()
from static_data.backend.static_data_app.models import Asset
if __name__ == '__main__':
my_list = list(Asset.objects.all())
print(my_list)
这就是我得到的
(提醒一下,在 pycharm 中,我的所有回购都在某个文件夹中,这里感兴趣的回购称为 'static_data')
/home/[...]/env/bin/python3.6 /home/[...]/static_data/test.py
Traceback (most recent call last):
File "/home/[...]/static_data/test.py", line 6, in <module>
django.setup()
File "/home/[...]/env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/[...]/env/lib/python3.6/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/home/[...]/env/lib/python3.6/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
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 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
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 'static_data_app'
Process finished with exit code 1
如果相对于项目目录(包含 manage.py
的目录)进行导入,您会发现它会容易得多
os.environ['DJANGO_SETTINGS_MODULE'] = 'static_data_project.settings'
django.setup()
from static_data_app.models import Asset
如果将 test.py
文件移动到项目目录中,我认为应该可以。如果将test.py
文件保留在原处,那么在调用django.setup()
:
之前需要将项目目录添加到Python路径
import sys
sys.path.append('/path/to/backend')
我已经按照以下设置了一个 Django 项目和该项目的应用程序。 更改模型后,我可以进行迁移和迁移。 我可以 运行 服务器和管理页面按预期显示我的应用程序。 我能够 运行 python manage.py shell,在 shell.
中导入和操作我的模型然而,当我尝试从另一个 python 文件(在 pycharm 中)导入我的模型时,我收到一条错误消息,指出找不到我的应用程序的模块。
OS:
Distributor ID: LinuxMint
Description: Linux Mint 19.3 Tricia
Release: 19.3
Codename: tricia
IDE
PyCharm 2020.2.3 (Community Edition)
Build #PC-202.7660.27, built on October 6, 2020
Runtime version: 11.0.8+10-b944.34 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Linux 5.4.0-52-generic
GC: ParNew, ConcurrentMarkSweep
Memory: 1871M
Cores: 8
Non-Bundled Plugins: Statistic, com.alayouni.ansiHighlight, com.intellij.ideolog, org.toml.lang, ru.meanmail.plugin.requirements, com.jetbrains.plugins.ini4idea
Current Desktop: X-Cinnamon
Python:
python 3.6
Django
Django==3.1.3
我已经阅读了之前的相关问题:django-modulenotfounderror-no-module-named-restaurants and
我没有移动文件或更改文件夹名称,我真的尽可能按照教程进行保存(我什至从 django doc 重新创建了 exat poll 应用程序示例并得到了同样的错误)。
我想这与我的环境变量设置不正确有关,但我对这一切都是新手,我不完全了解我应该检查什么,我应该如何检查这些以及最后如何这些可以修复。因此,如果问题与环境变量有关,我将不胜感激。谢谢!
在 pycharm 中,我有几个用于该项目的存储库保存在一个文件夹中,我通常会打开包含 pycharm 中所有存储库的文件夹。 这里感兴趣的回购称为 'static_data' 并且它包含以下树:
├── backend
│ ├── manage.py
│ ├── static_data_app
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── migrations
│ │ │ └── 0001_initial.py
│ │ ├── models.py
│ │ ├── tests.py
│ │ ├── tools
│ │ │ ├── loading.py
│ │ │ ├── new_expiry.py
│ │ │ └── setup.py
│ │ ├── urls.py
│ │ └── views.py
│ └── static_data_project
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── __init__.py
├── README.md
└── test.py
我有设置 static_data_project/settings.py
INSTALLED_APPS = [
'static_data_app.apps.StaticDataAppConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
然后当我尝试 运行 static_data/test.py in pycharm 时,其中包含以下代码:
import os
import sys
import django
os.environ['DJANGO_SETTINGS_MODULE'] = 'static_data.backend.static_data_project.settings'
django.setup()
from static_data.backend.static_data_app.models import Asset
if __name__ == '__main__':
my_list = list(Asset.objects.all())
print(my_list)
这就是我得到的 (提醒一下,在 pycharm 中,我的所有回购都在某个文件夹中,这里感兴趣的回购称为 'static_data')
/home/[...]/env/bin/python3.6 /home/[...]/static_data/test.py
Traceback (most recent call last):
File "/home/[...]/static_data/test.py", line 6, in <module>
django.setup()
File "/home/[...]/env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/[...]/env/lib/python3.6/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "/home/[...]/env/lib/python3.6/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
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 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
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 'static_data_app'
Process finished with exit code 1
如果相对于项目目录(包含 manage.py
的目录)进行导入,您会发现它会容易得多
os.environ['DJANGO_SETTINGS_MODULE'] = 'static_data_project.settings'
django.setup()
from static_data_app.models import Asset
如果将 test.py
文件移动到项目目录中,我认为应该可以。如果将test.py
文件保留在原处,那么在调用django.setup()
:
import sys
sys.path.append('/path/to/backend')