使用PyCharm

我阅读了此处发布的类似解决方案:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360002753800-Django-console-not-working-properly-on-docker

我已经实现了上述解决方案。奇怪的是,我可以在PyCharm中打开Django控制台而不会出现错误。通过执行以下操作,我已经确认Django控制台正在Docker容器中运行:


>>> import socket
>>> socket.gethostname()
'f6f418ce5d14'

我有一个入口点脚本(bash脚本),该脚本在Docker容器内执行以下操作而没有错误:


python manage.py migrate
python manage.py loaddata --format json /srv/app/api/opp/management/fixtures/dev.json

但是,当PyCharm尝试执行测试用例时,使用PyCharm自己的鼻子测试运行器,即会出现错误。以下是使用Docker容器运行Django测试用例时PyCharm输出的摘录:


app_1 | Installed 127 object(s) from 1 fixture(s)
app_1 | app_1 | launching Nosetest with arguments /opt/.pycharm_helpers/pycharm/_jb_nosetest_runner.py /srv/app/api/opp/tests in /srv/app/api
app_1 | 
app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | app_1 | 
error in setup context
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/nose/suite.py",line 210,in run
self.setUp()
File "/usr/local/lib/python3.8/site-packages/nose/suite.py",line 293,in setUp
self.setupContext(ancestor)
File "/usr/local/lib/python3.8/site-packages/nose/suite.py",line 316,in setupContext
try_run(context,names)
File "/usr/local/lib/python3.8/site-packages/nose/util.py",line 471,in try_run
return func()
File "/usr/local/lib/python3.8/site-packages/django/test/testcases.py",line 1131,in setUpClass
call_command('loaddata',*cls.fixtures,**{'verbosity': 0,'database': db_name})
File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py",line 102,in call_command
app_name = get_commands()[command_name]
File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py",line 68,in get_commands
for app_config in reversed(list(apps.get_app_configs())):
File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py",line 144,in get_app_configs
self.check_apps_ready()
File "/usr/local/lib/python3.8/site-packages/django/apps/registry.py",line 135,in check_apps_ready
raise AppRegistryNotReady("Apps aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.

似乎是PyCharm提供的测试运行程序,这引起了问题。根据我看到的输出,我相信PyCharm测试运行程序在运行测试用例之前不会执行以下命令:


import django

django.setup()

我试图找到在Docker容器中运行的PyCharm测试,以便我可以手动对其进行编辑。但是,我找不到它。帮我Obi Wan Kanobi,您是我唯一的希望!

singapore1 回答:使用PyCharm

今天,我逐行浏览了Dockerfile和docker-compose.yaml文件。我发现有一些与Docker和PyCharm完全无关的问题。我从同事那里复制了其他一些Bash配置脚本。事实证明,问题出在设置Bash变量时,没有安装所有正确的Alpine软件包,并且有两个额外的空间。例如,代替此错误行:

VARIABLE = "some value"

我应该有:

VARIABLE = "some value"

不用说,错过如此琐碎的事情会有点愚蠢。但是,当时我还不知道如何解决python:3-alpine映像中的Docker问题。我在这里发布我的答案/未回答,以防其他像我一样被误导的人发现它有用。

本文链接:https://www.f2er.com/3146887.html

大家都在问