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版本
决定看一下torch的路径
import torch
print(torch.__path__)
发现了问题所在
显示的路径竟然是在.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却没有
连接同一个虚拟环境,pycharm中可以看到是有transformers的
但是在 vscode中显示
ModuleNotFoundError: No module named ‘transformers’
用conda list查了之后发现
还真的是没有,不仅这个没有,很多包都没有,甚至连pip都不是同一个版本
决定打开xshell看一下,和vscode中显示一致
所以得重新下载一遍
重新 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
发现默认地址确实有问题
需要先把错误路径中的包卸载,再按照这个教程换地址
https://blog.csdn.net/tsq292978891/article/details/104655113
但是这样实在是太麻烦了,我选择
把.local中不符合的torch删掉,然后remove地址那一条去掉
先暂时用着 剩下的之后再说hhhhh