vscode使用中常见问题集合

  • import本项目的文件却no mudle named问题
  • torch问题
  • 连同一个环境pycharm中有的包vscode却没有



之前我一直用的是pycharm,但是发现pycharm的远程连接实在是很垃圾,转用vscode又存在很多问题啊,明明能在pycharm上运行的代码却在vscode上运行不了。


这篇经验主要是用来记录一下自己用vscode时遇到的一些问题

import本项目的文件却no mudle named问题

明明import的是自己的.py文件,却显示no mudle,问题在于运行当前文件时,默认的根目录为这个文件的父文件夹。
例如

test
 /- - -a
 /- - - - -b
 /- - - - -c
 /- - -d
 /- - - - -e


当我运行e的时候,根目录是d
那么我如果e中import b 或者import a.b都是不行的
只有在我把根目录改到test的时候,才行
这个时候应该在import b之前加上

import sys,os
sys.path.append(os.path.abspath("/xxx/xxx/test"))
#(xxxx看你自己的目录)

torch问题

在pycharm中明明可以运行的文件,在vscode中却显示
The NVIDIA driver on your system is too old (found version 10020). Please update your GPU driver by downloading
意思是我的torch和我的cuda不匹配,但问题是之前在pycharm运行的好好的,自己下载的也的确是匹配的pytorch

在尝试下面这段代码的时候

import torch
print(torch.cuda.is_available())

得到的答案是false

这说明我下载的不是gpu版本的torch
可是我conda list的时候,的确显示的是我的虚拟环境以及正确的torch版本

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_根目录

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_python_02

决定看一下torch的路径

import torch
print(torch.__path__)

发现了问题所在

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_python_03

显示的路径竟然是在.local/lib/python3.8/site-packages下的

如果用的是虚拟环境下的pytorch

应该是’/anaconda3/envs/虚拟环境名称/lib/python3.8/site-packages/torch’下的torch

根据前面的方法,我应该

import sys,os
sys.path.append(os.path.abspath("/xxxx/xxxxx/anaconda3/envs/xxxxx/lib/python3.8/site-packages"))
import torch

但是再次输出path还是显示的是之前的torch地址
经过print(sys.path)发现
.local那个路径在sys.path中
所以

import sys,os
sys.path.append(os.path.abspath("/xxxx/xxxxx/anaconda3/envs/xxxxx/lib/python3.8/site-packages"))
sys.path.remove("/xxxx/xxxxx/.local/lib/python3.8/site-packages")
import torch

这样之后import的torch就是正确的了

再次

print(torch.cuda.is_available())

得到的结果就算True了,地址也对了

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_vscode_04

连同一个环境pycharm中有的包vscode却没有

连接同一个虚拟环境,pycharm中可以看到是有transformers的

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_vscode_05

但是在 vscode中显示

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_python_06

ModuleNotFoundError: No module named ‘transformers’

用conda list查了之后发现

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_虚拟环境_07


还真的是没有,不仅这个没有,很多包都没有,甚至连pip都不是同一个版本决定打开xshell看一下,和vscode中显示一致

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_vscode_08


所以得重新下载一遍

重新 pip install transformers==4.27.1之后,却提示已经存在

Requirement already satisfied: transformers==4.27.1 in /xxxx/xxxxx/.local/lib/python3.8/site-packages (4.27.1)

那么问题就应该是,下载的各种包,可能有的在.local环境下,有的在env环境下。

pycharm的范围更广一些,把这些都囊括了进来,并且囊括了进来之后对于重复的包可以自己选择版本使用

而vscode不能选择包的版本,只能去掉一些版本不符合的路径,去掉路径之后就少了很多包。所以我们应该设置一下pip的默认下载地址

输入 python -m site

发现默认地址确实有问题

PyCharm 和 vscode 推荐那个 开发python 用pycharm还是vscode_根目录_09

需要先把错误路径中的包卸载,再按照这个教程换地址


但是这样实在是太麻烦了,我选择
把.local中不符合的torch删掉,然后remove地址那一条去掉
先暂时用着 剩下的之后再说hhhhh