环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named ‘xxx‘(WSL+Pycharm环境搭建系列之四)"/>
WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named ‘xxx‘(WSL+Pycharm环境搭建系列之四)
WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named 'xxx'
- 0.前言
- 1.问题现象
- 2. 问题分析
- 3. 解决办法
0.前言
经过前面几次的努力,我们基本上完成了环境中的搭建
本次我们解决一个基本上都会遇到的一个问题
那就是在WSL环境中运行python控制台调试django,控制台会报错: ModuleNotFoundError: No module named ‘xxx’
1.问题现象
其中的xxx是项目的名称,这里是csdntestdjango
/venv/csdntestdjango/bin/python /mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pydev/pydevconsole.py --mode=client --host=127.0.0.1 --port=41977
import sys; print('Python %s on %s' % (sys.version, sys.platform))
import django; print('Django %s' % django.get_version())
sys.path.extend(['F:\\localgit\\csdntestdjango', 'D:\\Program Files\\JetBrains\\PyCharm 2022.1.3\\plugins\\python\\helpers\\pycharm', 'D:\\Program Files\\JetBrains\\PyCharm 2022.1.3\\plugins\\python\\helpers\\pydev'])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run("F:/localgit/csdntestdjango")
PyDev console: starting.
Python 3.9.9 (main, Dec 7 2022, 13:29:41)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Django 3.2.11
Traceback (most recent call last):File "/mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcodecoro = func()File "<input>", line 6, in <module>File "/venv/csdntestdjango/lib/python3.9/site-packages/django/__init__.py", line 19, in setupconfigure_logging(settings.LOGGING_CONFIG, settings.LOGGING)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__self._setup(name)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setupself._wrapped = Settings(settings_module)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__mod = importlib.import_module(self.SETTINGS_MODULE)File "/opt/python39/lib/python3.9/importlib/__init__.py", line 127, in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)File "<frozen importlib._bootstrap>", line 1030, in _gcd_importFile "<frozen importlib._bootstrap>", line 1007, in _find_and_loadFile "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removedFile "<frozen importlib._bootstrap>", line 1030, in _gcd_importFile "<frozen importlib._bootstrap>", line 1007, in _find_and_loadFile "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'csdntestdjango'
2. 问题分析
聚焦这两行
sys.path.extend(['F:\\localgit\\csdntestdjango', 'D:\\Program Files\\JetBrains\\PyCharm 2022.1.3\\plugins\\python\\helpers\\pycharm', 'D:\\Program Files\\JetBrains\\PyCharm 2022.1.3\\plugins\\python\\helpers\\pydev'])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run("F:/localgit/csdntestdjango")
所有的路径都是Windows的路径,而非Linux路径,而我们的控制台实际上启动在WSL环境中
3. 解决办法
打开django控制台设置,添加路径映射
映射的规则大致是F:盘对应/mnt/f,其他路径与windows一致,相当于将windows文件系统挂载到了WSL子系统中(用于运行程序)
确定后重启python控制台,不再报该错误。但是报了新的错误,这个错误与外置配置文件相关,没有做外置文件配置的可忽略
/venv/csdntestdjango/bin/python /mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pydev/pydevconsole.py --mode=client --host=127.0.0.1 --port=44923
import sys; print('Python %s on %s' % (sys.version, sys.platform))
import django; print('Django %s' % django.get_version())
sys.path.extend(['/mnt/f/localgit/csdntestdjango', '/mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pycharm', '/mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pydev'])
if 'setup' in dir(django): django.setup()
import django_manage_shell; django_manage_shell.run("/mnt/f/localgit/csdntestdjango")
PyDev console: starting.
Python 3.9.9 (main, Dec 7 2022, 13:29:41)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Django 3.2.11
Traceback (most recent call last):File "/mnt/d/Program Files/JetBrains/PyCharm 2022.1.3/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcodecoro = func()File "<input>", line 6, in <module>File "/venv/csdntestdjango/lib/python3.9/site-packages/django/__init__.py", line 19, in setupconfigure_logging(settings.LOGGING_CONFIG, settings.LOGGING)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 82, in __getattr__self._setup(name)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 69, in _setupself._wrapped = Settings(settings_module)File "/venv/csdntestdjango/lib/python3.9/site-packages/django/conf/__init__.py", line 170, in __init__mod = importlib.import_module(self.SETTINGS_MODULE)File "/opt/python39/lib/python3.9/importlib/__init__.py", line 127, in import_modulereturn _bootstrap._gcd_import(name[level:], package, level)File "<frozen importlib._bootstrap>", line 1030, in _gcd_importFile "<frozen importlib._bootstrap>", line 1007, in _find_and_loadFile "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlockedFile "<frozen importlib._bootstrap>", line 680, in _load_unlockedFile "<frozen importlib._bootstrap_external>", line 850, in exec_moduleFile "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removedFile "/mnt/f/localgit/csdntestdjango/csdntestdjango/settings.py", line 16, in <module>conf = json.load(open("config/config.json", "r", encoding="utf-8"))
FileNotFoundError: [Errno 2] No such file or directory: 'config/config.json'
其实这个问题之前我有另一篇帖子已经讲的很清楚了,这里不详细解释。
解决该问题非常简单 只需要在django控制台设置中,正在启动脚本开头添加一句
import os; os.chdir([WORKING_DIR_AND_PYTHON_PATHS][0])
完成设置后,关闭django控制台,重新打开,完美运行。
这里需要注意一下,需要重新打开控制台,点击重新运行或者ctrl+F5没有任何作用。
如果你觉得我的文章还不错,确实解决了您的一些问题的话,麻烦点个赞、收藏、加粉丝,如果有什么问题可以在评论区交流,我将及时答复或者做出修正,谢谢!
更多推荐
WSL环境中Pycharm的python控制台中报错 ModuleNotFoundError: No module named ‘xxx‘(WSL+Pychar
发布评论