【问题标题】:Pycharm Django Console No module named 'django_manage_shell' on WSLPycharm Django 控制台在 WSL 上没有名为“django_manage_shell”的模块
【发布时间】:2021-10-08 11:40:33
【问题描述】:

我最近开始研究 WSL Ubuntu-20.04。运行服务器没有问题。但是当我尝试连接 Pycharm 的 Django 控制台时,出现以下错误:

Traceback (most recent call last):
File "<input>", line 7, in <module>
ModuleNotFoundError: No module named 'django_manage_shell'

我检查了控制台解释器和启动脚本,尝试添加项目路径、我的 virtualenv 路径但没有任何效果。

My Django Console Options

这是启动脚本:

import sys; print('Python %s on %s' % (sys.version, sys.platform))
import django; print('Django %s' % django.get_version())
sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run(PROJECT_ROOT)

当我在 Ubuntu 或 Windows 上工作时,我没有遇到过这样的问题。这个问题发生在 WSL 中。

所以我正在等待您的帮助,非常感谢您抽出宝贵的时间。

【问题讨论】:

    标签: python django pycharm console windows-subsystem-for-linux


    【解决方案1】:

    所以,我有一个很糟糕的解决方法,我将把它留在这里,供路过 StackOverflow 孤独部分的其他旅行者使用。但我希望别人能做得更好。

    django_manage_shell 模块来自 PyCharm 的助手,不是正常 Django 发行版的一部分。在 WSL 下运行时,python 解释器无法访问这些帮助程序,并且您会收到上述错误。

    我能找到的最佳解决方案是让该帮助模块中的代码在启动脚本中可访问。幸运的是,您可以轻松获得这个模块(以及它所依赖的 fix_getpass 模块)。每个地方的代码都可以在这些地方找到(取决于您的 PyCharm 安装):

    C:\Program Files\JetBrains\PyCharm 2021.2\plugins\python\helpers\pycharm\django_manage_shell.py
    
    C:\Program Files\JetBrains\PyCharm 2021.2\plugins\python\helpers\pycharm\fix_getpass.py
    

    我将在这些模块中找到的代码粘贴到 PyCharm 中的 Django 控制台启动脚本中。我不得不重新组织一下,并更改调用 django_manage_shell.run() 以调用复制的代码。

    我无法强调这种方法有多么脆弱和粗暴,但我还没有找到替代方法。如果我找到更好的方法,或者如果 JetBrains 自己解决了这个问题,我会回来更新这个答案。

    编辑:对我的原始解决方案进行了轻微改进,其中涉及 WSL 端的流氓 python 模块。这样可以避免污染您的项目,并将 hack 限制在 PyCharm 方面。

    【讨论】:

    • 我将您提到的两个脚本原样复制到我的 django 项目根目录所在的 /home//pycharm(在 WSL 中)。看起来,由于 django 控制台的默认启动脚本,此“主”目录位于 PATH 中,即这一行: sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS]) 并且由于最后导入并运行语句
    • 哦,太好了,这可能会更干净一点!我刚开始使用 Django,所以我确信有无数种方法可以做得更好。绝对将其发布为替代答案!获得那些甜美的声望点数!
    猜你喜欢
    • 2017-03-25
    • 1970-01-01
    • 2019-04-16
    • 2019-03-12
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多