pycharm WSL上没有名为'django_manage_shell'的模块

xv8emn3q  于 2022-11-08  发布在  PyCharm
关注(0)|答案(3)|浏览(167)

我最近开始在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上。
所以我在等待你的帮助,非常感谢你的时间。

oknwwptz

oknwwptz1#

所以,我有一个很糟糕的解决方案,我会把它留在这里,供路过StackOverflow这个孤独部分的旅伴们使用。但我希望其他人能做得更好。
django_manage_shell模块来自PyCharm的helper,并不是普通Django发行版的一部分。当在WSL下运行时,这些helper无法被python解释器访问,并且会出现上面的错误。
我所能想到的最好的解决方案是让helper模块中的代码可以在启动脚本中访问。幸运的是,您可以轻松地访问这个模块(以及它所依赖的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 Console启动脚本中。我不得不重新组织一些东西,并更改调用django_manage_shell.run()来调用复制的代码。
我无法强调这种方法是多么脆弱和粗糙,但我还没有找到替代方法。如果我找到一个更好的方法,或者如果JetBrains自己解决了这个问题,我会回来更新这个答案。
编辑:对我最初的解决方案做了一点改进,它在WSL端包含了一个流氓Python模块。这避免了污染你的项目,并将黑客限制在PyCharm端。

1rhkuytd

1rhkuytd2#

正如@Nacho所说,这是因为PyCharm无法从WSL内部访问Windows主机上的helpers文件夹。
您可以将PyCharm helpers文件夹的路径添加到您的路径Map中。因此,pycharm将可以访问所有的帮助文件
一种方法是:
1.打开设置-〉构建,执行,部署-〉Django控制台
1.添加新的Path Mapping
本地路径C:/Program Files/JetBrains/PyCharm 2021.3.3/plugins/python/helpers/pycharm
远程路径/mnt/c/Program Files/JetBrains/PyCharm 2021.3.3/plugins/python/helpers/pycharm
1.关闭控制台并再次打开它根据PyCharm版本和WSL设置修改上面的路径
现在PyCharm将能够定位django_manage_shell和任何其他

sgtfey8w

sgtfey8w3#

我不是在WSL,但这个问题出现时,我正在寻找一个解决方案和Hassaan AlAnsary的答案帮助我。
在Linux上,运行PyCharm 2022.2.1,在Docker中使用Python,我得到了这个错误,并通过在设置-〉构建,执行,部署-〉控制台-〉Django控制台中修改启动脚本来解决它。
我接过线:

sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])

并且我在Docker容器中添加了helper的位置:

sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS, "/opt/.pycharm_helpers/pycharm"])

这样就解决了问题。

相关问题