Pycharm Django 控制台 WSL 上没有名为“django_manage_shell”的模块

Ata*_*kar 8 python django console pycharm windows-subsystem-for-linux

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

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

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

我的 Django 控制台选项

这是启动脚本:

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)
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu 或 Windows 上工作时没有遇到这样的问题。WSL 发生了此问题。

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

Aar*_*n F 13

我没有加入 WSL,但当我寻找解决方案时出现了这个问题,Hassaan AlAnsary 的回答对我有所帮助。

在 Linux 上,运行 PyCharm 2022.2.1,在 Docker 中使用 Python,我收到此错误,并通过修改“设置”->“构建、执行、部署”->“控制台”->“Django 控制台”中的启动脚本来解决该错误。

我接了线:

sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
Run Code Online (Sandbox Code Playgroud)

我在 Docker 容器中添加了助手的位置:

sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS, "/opt/.pycharm_helpers/pycharm"])
Run Code Online (Sandbox Code Playgroud)

这解决了问题。


Nac*_*cho 5

因此,我有一个糟糕的解决方法,我将把它留在这里,供路过 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我将您提到的两个脚本复制到我的 django 项目根目录所在的 /home/&lt;username&gt;/pycharm (在 WSL 中)。看起来,由于 django 控制台的默认启动脚本,这个“主”目录位于 PATH 中,即这一行: sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS]) ,然后由于以下原因正常调用脚本最后导入并运行语句 (2认同)