首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\utils\rule.py):无法从“jira_plug.utils.rule”jira_plug.utils.rule导入名称“get_rule_detail”

(D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\utils\rule.py):无法从“jira_plug.utils.rule”jira_plug.utils.rule导入名称“get_rule_detail”
EN

Stack Overflow用户
提问于 2022-09-01 02:00:14
回答 2查看 30关注 0票数 0

我的Django项目启动时有问题

代码语言:javascript
复制
2022-09-01 09:22:51,525 [MainThread:25612] [django.utils.autoreload:612] [INFO]- Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Python37\lib\threading.py", line 926, in _bootstrap_inner
    self.run()
  File "C:\Python37\lib\threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Python37\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
    fn(*args, **kwargs)
  File "C:\Python37\lib\site-packages\django\core\management\commands\runserver.py", line 118, in inner_run
    self.check(display_num_errors=True)
  File "C:\Python37\lib\site-packages\django\core\management\base.py", line 396, in check
    databases=databases,
  File "C:\Python37\lib\site-packages\django\core\checks\registry.py", line 70, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
  File "C:\Python37\lib\site-packages\django\core\checks\urls.py", line 13, in check_url_config
    return check_resolver(resolver)
  File "C:\Python37\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver
    return check_method()
  File "C:\Python37\lib\site-packages\django\urls\resolvers.py", line 408, in check
    for pattern in self.url_patterns:
  File "C:\Python37\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Python37\lib\site-packages\django\urls\resolvers.py", line 589, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Python37\lib\site-packages\django\utils\functional.py", line 48, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Python37\lib\site-packages\django\urls\resolvers.py", line 582, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Python37\lib\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 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "D:\code\ido-jira-plug\IdoJiraPlug\IdoJiraPlug\urls.py", line 23, in <module>
    path('jira/', include('jira_plug.urls', namespace='jira_plug')),
  File "C:\Python37\lib\site-packages\django\urls\conf.py", line 34, in include
    urlconf_module = import_module(urlconf_module)
  File "C:\Python37\lib\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 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\urls.py", line 5, in <module>
    from . import api
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\api\__init__.py", line 3, in <module>
    from .config import *
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\api\config.py", line 5, in <module>
    from jira_plug.utils import JiraAction
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\utils\__init__.py", line 6, in <module>
    from .rule import *
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\utils\rule.py", line 4, in <module>
    from jira_plug.serializers import RuleConfigInfoSerializer
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\serializers\__init__.py", line 4, in <module>
    from .request_serializer import *
  File "D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\serializers\request_serializer.py", line 6, in <module>
    from jira_plug.utils import JiraAction, get_msg_data, get_rule_detail, handle_message_content
ImportError: cannot import name 'get_rule_detail' from 'jira_plug.utils' (D:\code\ido-jira-plug\IdoJiraPlug\jira_plug\utils\__init__.py)

这是我的项目

代码语言:javascript
复制
IdoJiraPlug
    - jira_plug
        - __init__.py
        - api
            __init__.py
            config.py
        - serializers
            __init__.py
            request_serializer.py
        - utils
            __init__.py
            rule.py
        - urls.py
    - manage.py

jira_plug.utils.__init__.py

代码语言:javascript
复制
from .rule import *

jira_plug.utils.rule.py

代码语言:javascript
复制
...
from jira_plug.serializers import RuleConfigInfoSerializer
...

jira_plug.serializers.__init__.py

代码语言:javascript
复制
from .request_serializer import *

jira_plug.serializers.request_serializer.py

代码语言:javascript
复制
...
from jira_plug.utils import JiraAction, get_msg_data, get_rule_detail, handle_message_content
...

我觉得这是因为rule.py和request_serializer.py相互导入,但我不知道真正的原因。我尝试使用“from jira_plug.utils.rule import get_rule_detail,handle_message_content”,但它仍然存在此错误。

EN

回答 2

Stack Overflow用户

发布于 2022-09-01 04:01:50

jira_plug应用程序中的utils.py文件中,您没有get_rule_detail类或函数或变量名称。

如果您确信它是存在的-请尝试检查utils.py中的每个字母,您可能会发现错误。

票数 0
EN

Stack Overflow用户

发布于 2022-09-01 07:56:23

我解决这个问题的真正原因是import_module().python循环导入.When django启动,urls.py将由开始按jira_plug.urls.py逐步加载模块。

  1. jira_plug.urls.py,5行:from . import api,然后python将加载jira_plug.api.__init__.py module.
  2. jira_plug.api.__init__.py,3行:from .config import *,然后python将加载jira_plug.api.config.py module.
  3. jira_plug.api.config.py,5行:from jira_plug.utils import JiraAction,然后python将加载jira_plug.utils.__init__.py module.
  4. jira_plug.utils.__init__.py,6行:from .rule import *,然后python将加载jira_plug.utils.rule.py module.
  5. jira_plug.utils.rule.py,4行:from jira_plug.serializers import RuleConfigInfoSerializer,然后python将加载jira_plug.serializers.__init__.py module.
  6. jira_plug.serializers.__init__.py,。4行:jira_plug.serializers.request_serializer.py module.
  7. jira_plug.serializers.request_serializer.py,:from .request_serializer import *,然后python将加载from .request_serializer import *6行:from jira_plug.utils import JiraAction, get_msg_data, get_rule_detail, handle_message_content,然后python将加载jira_plug.utils包。

第5步、第6步和第7步导致这个错误。A->B-> A,模块A没有加载,B模块也加载A模块,所以解释器导致了"ImportError“。

最好的解决方案是计划抽象公共包

临时解决方案是修改jira_plug.api.config.py.

代码语言:javascript
复制
# from jira_plug.utils import JiraAction
from jira_plug.utils.call_jira import JiraAction

这将导致在第3步之后消失,但这是一个隐藏的危险,我已经抽象了一些常用的方法。这个解决方案只是一个例子!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73563591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档