在Windows和Python3.9x中运行VS代码
我创建了一个新的项目文件夹,并为此项目创建了一个新的虚拟环境。我创建的第一个脚本是一个.ipynb文件(jupyter笔记本),它运行得很好。当我将脚本导出到.py文件时,它在代码的第一行生成一个错误:
from pynput import keyboard
ModuleNotFoundError:没有名为‘pynput’的模块
Pynput库安装在这个虚拟环境中,这就是.ipynb文件运行良好的原因。当我查看VS代码的右下角时,我可以看到虚拟环境被激活:
并在终端提示符前加上(proj_env)
。当我运行pip list
时,我可以看到pynput包已经安装。它没有安装在系统环境中,这就是为什么我猜测该脚本试图使用系统环境,但我可能错了。
我遗漏了什么?
从评论中描述的测试来看,可能与Windows CMD窗口(运行虚拟环境)检查脚本想要导入的包的特定路径与VS代码检查特定路径之间的差异有关。
1条答案
按热度按时间e1xvtsh31#
弄清楚了这个问题,当我问这个问题的时候,我并不是很理解,然后一个(那个?)决议。如果这个答案有任何错误,请纠正(并教育)我,谢谢。
在VSCode中,“运行代码”(使用CodeRunner扩展)和“运行Python文件”(这是终端中的运行文件)是不同的。播放按钮将使用上次运行的任何一个(打开播放按钮旁边的下拉框)。
我遇到了与此用户相同的问题:Run Code vs Run Python File in Terminal for VSCODE
项目的settings.json文件指定了指向虚拟环境的python.exe的“python.defaultInterpreterPath”。因此,当我在终端中运行.py文件时,会发现仅安装在虚拟环境(而不是全局/系统环境)中的包。
但Run Code使用Code-Runner,它默认为全局环境的python.exe,因此找不到仅存在于虚拟环境中的包。解决方案是指定Code-Runner应该使用哪种环境,方法是将此代码添加到settings.json文件:
"code-runner.executorMap": { "python": "\"$pythonPath\" $fullFileName", }
。因为我的settings.json文件已经指定了虚拟环境的python解释器,所以此代码片断将告诉Code-Runner使用相同的python解释器来执行代码。