WSL2 的开发环境配置 (基础配置, 网络代理, CUDA, Python, Fortran, Latex) 您所在的位置:网站首页 vmware虚拟机网络不可达 WSL2 的开发环境配置 (基础配置, 网络代理, CUDA, Python, Fortran, Latex)

WSL2 的开发环境配置 (基础配置, 网络代理, CUDA, Python, Fortran, Latex)

#WSL2 的开发环境配置 (基础配置, 网络代理, CUDA, Python, Fortran, Latex)| 来源: 网络整理| 查看: 265

每一个将Windows电脑作为主力机的用户, 如果有一定的编程需求, 都会问一个问题: 开发环境是直接在Windows中搭建呢, 还是全部在Linux子系统中搭建? 目前Windows的开发环境也不断进步, 不过Linux在众多涉及与大服务器对接的开发场景中仍是主流. 下面我试图列举将开发环境部署在WSL中的理由:

Windows部署开发环境动不动就要重启, 遇到什么毛病也要重启, 重启对简单的远程访问是致命的. 而如果在WSL2这种虚拟机中配置开发环境, source ~/.bashrc 和关掉terminal重开就能解决了. Windows是生活娱乐和阅读办公, WSL是编程开发, 两者分离之后, 文件系统就会比较优雅. LaTeX在Linux中的编译速度是Windows的3-4倍[1].......

对于职业开发者来说, 或许Linux系统才是最好的选择. 因为WSL2确实有一些原生系统或者传统虚拟机所不具有的问题, 只能等待微软修bug--这听上去就不太靠谱. 网上大多关于Ubuntu的教程也必须小心使用, 不完全适用于WSL2. 这一篇文章中, 我将基于我的两次安装Ubuntu 22.04的经历, 介绍我在Windows11系统中的WSL2配置流程, 将避开我曾经踩的坑. 大多数不会给细节, 而是导向我参考的教程.

原则1: 能用图形界面就用图形界面, 少用命令行. 原则2: 软件更新日新月异, 参考的教程首选官方 QuickStart 和 Tutorial, 少用CSDN和各路中英文论坛. 基础配置安装 WSL | Microsoft Learn: 下面我的示例发行版都是Ubuntu 22.04.2 LTS. 设置 WSL 开发环境 | Microsoft Learn用Windows资源管理器打开当前目录: explorer.exe .​​ , 末尾的.​​的意思是打开当前目录. 所有的新建文件夹、复制粘贴文件、新建移动删除文件都可以用资源管理器进行. 比如可以在自己的用户文件名下面新建一个名为Projects的文件夹, 然后将你正在干的活 (写的latex项目, python代码等等)从Windows粘贴进去. 当然, 最基本的cd 和ls 命令还是要掌握的. 其他的rm, rm -rf , cp 用多了就熟悉了. 开始通过 WSL 使用 VS Code | Microsoft Learn只需在Windows中安装VS Code. 用 vs code 打开当前目录的命令: code .​​ 首次运行该命令, 系统会指引你安装所需的包. 后面就可以顺利打开了, 右下角会有一个远程连接的绿色高亮字样, 应该需要安装一些remote插件. 大部分的开发流程都可以在VS Code中完成. 安装你所需的插件, 一般打开一个.py的文件 VS code就会提示你安装对应拓展名的插件. 或者在插件商店中搜索你用的编程语言, 把(所有)下载量很高的都下载下来. 在Windows中下载好的插件, 是需要在WSL重新下载的. 最终插件页面会有两个分区, 开始在 WSL 上使用 Git | Microsoft Learnwsl配置git环境_文艺圈不知名刘先生的博客-CSDN博客_wsl配置git: 可以参考其中关于ssh免密访问github的部分设置, 以后git clone的时候均用形如[email protected]:oldratlee/translations.git 的链接, 免去多次输入用户名密码的烦恼. VS Code 自带 Git 管理可视化面板, 原则上你只需要会用 git clone. 当然, Git的命令实在太多了, 比如我要把Github上一个库的更新合并到我的本地, 就有fetch, merge, pull等等, 我没用过时也分不清楚 VS Code 中提供的那些个按钮是什么意思, 因此一开始用还是可以用命令行熟悉对应的命令(这方面教程很多), 然后再用更方便的可视化按钮. 推荐安装GitLens插件, 展现项目的时间轴非常清晰. 重新安装某个WSL发行版: 见 windows 11 重新安裝 wsl-Ubuntu22.04 完整過程 - HackMD.

下面进入WSL2中的一些具体环境配置. 首先需要注意到一个很重要的脚本文件, 即用户文件夹中的.bashrc. 这一脚本在每次开启WSL的时候都会先运行一遍, 我们经常会需要在这里添加环境变量啥的. 每次修改完.bashrc之后, 要用source ~/,bashrc或者重启terminal使其生效.

网络代理 (Clash)

在Windows中的软件配置网络代理, 一般就是127.0.0.1:[port], 其中[port]在各个代理软件中查询. 而在WSL2中稍微有点特殊. 如果仔细观察过Windows资源管理器中的Ubuntu目录的话, 会发现它的开头是\\wsl.localhost\Ubuntu-22.04, 有点类似于局域网. 事实上也确实如此, 在 WSL2 中, 用 Windows 版本的Clash 设置代理, 首先需要打开局域网连接 (Allow LAN),

然后点击旁边的图标就会看到WSL的IP地址, 用这个地址代替常用的127.0.0.1就可以了. 设置代理可以以环境变量的方式进行, 可以直接写入到 .bashrc 文件之中, 就可以每次打开WSL都自动连接Clash代理了. 推荐几个教程:

WSL2 配置代理 | MrLeiDeSen's Blog + 在 WSL2 中使用 Clash for Windows 代理连接 - East Monster 个人博客. 关键的环境变量设置如下:host_ip=$(cat /etc/resolv.conf |grep "nameserver" |cut -f 2 -d " ") export http_proxy="http://$host_ip:[端口]" export https_proxy="http://$host_ip:[端口]"Windows 原生运行Linux如何自由访问互联网 WSL2 使用 Clash for - 腾讯云开发者社区-腾讯云 (tencent.com) 还给出了另外两条环境变量, 以及开启关闭WSL2中代理的简便方法. export all_proxy="sock5://192.168.112.1:7890" export ALL_PROXY="sock5://192.168.112.1:7890"

第三个参考文章中定义了两个命令 setp 和unsetp, 分别用于在命令行中开启和关闭代理, 非常实用. 如果您是用Clash之外的其他代理软件, 可以参考第一个参考文章.

连接 NVIDIA GPU可以首先看看NVIDIA的官方页面: GPU in Windows Subsystem for Linux (WSL) | NVIDIA Developer

安装NVIDIA显卡的WSL驱动, 重点关注两个命令: nvidia-smi和nvcc -V, 分别对应显卡的CUDA驱动和CUDA Toolkit.

安装最新版本的 Windows 驱动, check一下 nvidia-smi​​​命令在cmd和wsl中是否都可以使用. 上面是cmd的输出, 下面是WSL的输出, 两者在左上角的NVIDIA-SMI 版本号上略有不同. Enable NVIDIA CUDA on WSL 2 | Microsoft LearnNVIDIA GPU Accelerated Computing on WSL 2: 只需要安装windows端驱动程序即可完成WSL2系统中的GPU驱动安装了. 安装 CUDA Toolkit. 首先测试nvcc -V​​​, 应该是不能用的. 它会提示你用如下命令安装: sudo apt install nvidia-cuda-toolkit. 我知道你很急, 但是先别急. 在官网CUDA Toolkit 12.1 Downloads | NVIDIA Developer, 可以选择WSL2 Ubuntu, 然后得到你安装所需要的一系列命令. 这安装的是最新的12.1版本. 在历史版本的连接中, 也可以选择老的版本. 需要使用多新的版本, 要看你的显卡算力来选择. 根据 python - Why `torch.cuda.is_available()` returns False even after installing pytorch with cuda? - Stack Overflow, 首先通过 CUDA Wikipedia page 检查图形卡和CUDA版本之间的适配性. 比如我的是4080, 就需要11.8以上的版本. 可以使用多新的版本, 要看Pytorch的支持到了什么程度. 因为为WSL连接显卡大多数用途就是搞机器学习的, 从Pytorch官网可以看到最新也只支持到11.8. 因此我选择安装11.8版本的 CUDA Toolkit. 注: 这一块我踩了许多坑, 但现在也没有完全搞清楚是否必要安装 11.8 而不能装更新或者更老的版本. 如果版本不对, 在WSL中跑需要调用GPU的程序, 经常会出现no CUDA GPU available ,no GPU source find等类似的玄学 Runtime error. 欢迎补充. 11.8版本的下载链接为: CUDA Toolkit 11.8 Downloads | NVIDIA Developer. 提供了三种安装方式, 我分别尝试了, 结论是最好用 runfile 安装. deb(local): 到最后一步报错了. E: Unable to locate package cudadeb (network) 安装: 到第四步跑得比较久. 最终成功了, 但它给我安装了一堆12.1版本的...... 根据cuda-installation-guide-linux 12.1 documentation (nvidia.com), 运行如下命令卸载 CUDA Toolkit. 但是注意不要用原教程中删掉Drivers的部分. 可以测试一下 nvidia-smi​​, 正常运行. sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"Runfile: 一共两条命令, 先把安装包下载下来, 然后运行安装包, 按照提示默认一直下一步就行了.安装好 CUDA Toolkit 11.8之后, nvcc -V​​ 还是不可用. 首先可以用资源管理器检查一下目录/usr/local, 应该会有一个cuda-11.8的文件夹. 然后需要在.bashrc中添加如下三行环境变量之后, 就成功输出了[2].export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.8/lib64 export PATH=$PATH:/usr/local/cuda-11.8/bin export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.8 如何检查WSL2可以识别我的GPU?drivers - Nvidia on WSL2 still not working - Ask Ubuntu使用docker直接运行一些东西Python 配置

在WSL中直接安装 conda, 里面有常用的包

Installing on Linux — conda 23.1.0 documentation注意需要进行初始化, 一般用的是bash终端, 则conda init bash​​

一些特殊的包, 遇到再下载就好了. 建议把base环境用作日常跑些小程序的Python环境, 当需要部署一些大模型的时候就新建虚拟环境.

Python 开发可以全部在 VS code 中完成.

在WSL中进入你的project文件夹; code . 用 VS code 打开文件夹; 安装好python所需插件之后, 在界面右上角可以选择你要用的内核(conda环境)Conda 虚拟环境中使用 pip 安装包

问题: 在进入conda虚拟环境之后, 使用 pip install -r requirements.txt ​时发现系统报错 Defaulting to user installation because normal site-packages is not writeable​, 然后一通操作把我的包全部安装到了Linux的python环境去了.

寻找病因: 根据 conda环境下pip install 无法安装到指定conda环境中, 在进入你的conda虚拟环境之后, 可以用命令python -m site 来看这个环境会搜索包的路径是哪些, 不看不知道, 一看吓一跳, 里面的文件夹没有一个是我这个虚拟环境所在的目录!

解决: 根据python - Using Pip to install packages to Anaconda Environment - Stack Overflow的高赞回答, 可以养成习惯, 按照下面的步骤进行虚拟环境的初始化设置

创建和进入虚拟环境: Run conda create -n venv_name​ and conda activate venv_name​, where venv_name​ is the name of your virtual environment.在虚拟环境中先用conda install​安装一个pip: conda install pip​注: 用 conda install​ 这个命令安装包总是会正确地安装到当前虚拟环境的. 但是 conda channel 在安装许多包的时候会找不到包.

3. 使用pip install package_name安装, 看看能不能正常安装到当前虚拟环境. 如果不行, 就继续之下下面两步.

4. 找到虚拟环境的工作目录: 形如 ~/anaconda3/envs/venv_name/​.

5. 使用pip​安装时带上它前面的一串路径: /anaconda/envs/venv_name/bin/pip install package_name​.

正确操作配置好pip之后, 可以再次用python -m site检查一下, 可以看到 sys.path 都修正过来了, 但是USER_SITE 显示并不存在, 因为目录的版本号变为了正确的3.11. 无妨, 能运行就好.

实测当执行conda install pip​之后上面的sys.path就修正过来了.Fortran 配置

Fortran 的编译器介绍: GNU Fortran - GNU Project

教程: Linux下安装gcc 、g++ 、gfortran编译器 - zhuzhipeng - 博客园 (cnblogs.com). 其中gcc 和g++都是Linux自带的, 只需要安装gfortran编译器即可.

安装好 VS code 中相关插件之后, Fortran 开发也可以全部在 VS code中完成. 只不过右上角的运行是最简单的单程序编译+运行; 复杂的编译链还是需要自己写 makefile文件, 比如先把各个.f90编译, 然后按理想顺序 link 起来, 最后得到一个文件来运行.

LaTeX 配置Texlive 2023 安装

主要参照官方教程 Quick install - TeX Live - TeX Users Group (tug.org) 中的 Unix 部分, 所需用到的五个命令如下, 最后一个命令运行之后就开启了安装之旅, 需要较长的时间. 安装会自动选择最近的镜像站, 可以先把代理关掉.

cd /tmp # working directory of your choice wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz # or curl instead of wget zcat < install-tl-unx.tar.gz | tar xf - cd install-tl- sudo perl ./install-tl --no-interaction # as root or with writable destination注意第四行中的 需要自己填进去, 可以用ls​命令看到tmp目录下有一个文件夹, *是一个日期格式的八位数字.关于最后一行命令, 我解释一下和官方教程的不同之处. 在启动安装这一步, 如果你不带上sudo而是直接用 perl ./install-tl​ --no-interaction​, 是会出问题的. 可以先不带上tag--no-interaction​​, 然后就会进行自定义安装. 第一步就会提示你, 默认的安装文件夹是不可写的.除了直接用sudo获取管理员权限使得可写之外, 还可以将其安装在用户文件夹[3], 但不推荐这么干, 因为我在后面的程序调试中出现了问题, 还得将Texlive重新安装. 不过下面还是给出一个流程给感兴趣的人. perl ./install-tl​ 按D​​选择自定义安装路径; 按下命令1, 然后将TEXDIR​修改为~/texlive/2023​, 也就是安装到自己的用户目录之下. 修改好之后就一次按R​和I​即可.Texlive 2023的卸载: 其实基本没有什么技术含量, 主要是删文件夹[4], 把你能想到的, 尤其在安装流程中出现了的目录都删掉sudo apt-get purge texlive* rm -rf /usr/local/texlive/2023 #默认地址 rm -rf ~/texlive/2023 #我上面选用的用户地址 rm -rf ~/.texlive2023 rm -rf /usr/local/share/texmf rm -rf /var/lib/texmf rm -rf /etc/texmf sudo apt-get remove tex-common --purge rm -rf ~/.texlive配置环境变量和中文依赖主要参照Linux系统下安装texlive进行

首先在.bashrc文件中设置如下三个环境变量:

export MANPATH=${MANPATH}:/usr/local/texlive/2023/texmf-dist/doc/man export INFOPATH=${INFOPATH}:/usr/local/texlive/2023/texmf-dist/doc/info export PATH=${PATH}:/usr/local/texlive/2023/bin/x86_64-linux

然后进行一些后续的中文环境配置:

支持中文,需要安装中文包sudo apt-get install texlive-lang-chinese使用更多的字体和软件包sudo apt-get install texlive-latex-base texlive-latex-extra texlive-latex-recommended texlive-fonts-recommended安装XeLaTexsudo apt-get install texlive-xetex

更一劳永逸的是学会移植 Windows 系统的中文字体: 参考 在Linux环境下安装texlive_卡拉潇克的博客-CSDN博客, 首先将Windows系统下的字体文件夹C:\Windows\Fonts​整个拷贝到linux下的Home文件夹中 (只有个人文件夹有读写权限), 然后按下面命令操作

# 创建一个winfonts文件夹用于存放所有字体 sudo mkdir /usr/share/fonts/winfonts # 将字体从Fonts文件中拷贝到winfonts中 sudo cp ~/Fonts/* /usr/share/fonts/winfonts/ # 进入到字体文件夹 cd /usr/share/fonts/winfonts/ # 修改字体访问权限 sudo chmod 744 * # 回到主目录 cd ~ # 更新字体信息,使其生效 sudo mkfontscale sudo mkfontdir sudo fc-cache -fv

中文字体可以用fc-list :lang=zh-cn​​ 来查看在系统中的具体名字, 有了这个字体代号之后, LaTeX中调用中文字体可以见我另一篇文章 Win10环境下LaTeX中文字体的设置 - 知乎 (zhihu.com).

后面想安装新的字体, 也可以将字体文件直接复制到对应位置, 然后按上面流程刷新一下字体缓存.

最后, LaTeX编程同样可以全部在VS code中完成. 导航到你的latex project文件夹, 输入code .命令用VS code打开当前文件夹. VS code安装了Latex workshop 等插件之后就可以进行编译了, 编译链条的设置和Windows完全一样.

LaTeX 编译 Debug: xxx.sty not found

愉快完成LaTeX的配置之后, 开始编译tex文档, 才暴露出了wsl中一些我从来没有在 Windows 和 macOS 遇到的问题.

首先是刚开始用会出现的一些样式文件找不到的error, 如:

******************************************************** ) (/usr/share/texlive/texmf-dist/tex/latex/enumitem/enumitem.sty) ! LaTeX Error: File `bbm.sty' not found. Type X to quit or to proceed, or enter new name. (Default extension: sty)

关于这个坑, 我花了很多时间才跳出来. 比如去网上找它对应的包和文件想着怎么塞进哪个文件夹去, 甚至用一些全局搜索工具来检索这个样式文件到底存不存在. 结果很惊人, 有些第三方库是包含在 CTAN: Package newtx 里面的, 明明在文件夹/usr/local/texmf-dist​里面可以找到, 但却偏偏提示not found! 最后我看到 Add/Find Style files in/to latex - Stack Overflow , 才找到了一个比较通用的解决方案.

首先找到这个not found的样式文件所依赖的 package, 我这里就是bbm.sty apt-file -x search '/NAME.sty$'可能会提示你安装apt-file​​并update, 按提示操作即可, 无权限就在命令前面加一个sudo. 这个命令会搜索到若干个package如下图所示, 这里的texlive-fonts-extra就是你要安装的包. 然后你就用如下命令安装即可sudo apt-get install texlive-fonts-extra

安装好这个包之后, 再次对你的tex文件进行编译, 你很大概率又会发现有哪个sty文件又是 not found. 没关系, 不断重复上面的三个步骤即可. 直到你解决了所有的问题, 就可以顺利编译了. 给大家展示一下我编译我本科毕业论文时遇到的所有not found的样式文件:

bbm.sty, biblatex.sty有些第三方库不包含在CTAN之中, 想安装这些包则可以看texlive - Create a local texmf tree in Ubuntu - TeX - LaTeX Stack Exchange中的高赞回答, tex默认会访问你的~/texmf​​, 因此可以把第三方库放在~/texmf/tex/latex/​​里面.LaTeX 编译 Debug: biber 和 biblatex的兼容矩阵 (compatible matrix) 问题

在用biber编译参考文献时, 会报以下的错误

INFO - This is Biber 2.19 INFO - Logfile is 'main.blg' INFO - Reading 'main.bcf' ERROR - Error: Found biblatex control file version 3.8, expected version 3.10. This means that your biber (2.19) and biblatex (3.17) versions are incompatible. See compat matrix in biblatex or biber PDF documentation. INFO - ERRORS: 1

参照 installing - How to upgrade 'biblatex' properly? - TeX - LaTeX Stack Exchange 安装了texlive-full​​就好了, 不过这也是一个很长的安装过程了...

sudo apt-get install texlive-full尾声

最近在WSL中配置一些开源类GPT大模型, 经常会在CUDA方面遇到很多玄学问题让我痛不欲生 ...... 但是 WSL 依然是我非常喜欢的一个Windows的功能, 与 Windows 文件打通 (访问Windows文件夹前面加一个mnt即可), 应用打通 (VS code, Clash); 同时又能互不干扰, 各自在编程开发和日常办公娱乐中发挥自己的长处. 长期使用图像化界面的Windows用户也能过一把命令行系统的瘾. 我对 WSL 的评价就是两个字: 优雅!

Windows 11 还有安卓子系统的功能. 集齐了 Windows, Linux 和安卓三个生态, 经历一波大换皮把macOS的许多设计都抄过来了, 如优化系统动画、逐渐统一UI风格、资源管理器的多标签页 (甚至Poweshell也有标签页了)...... 如此一盘大杂烩, 香!

最后, 虽然Win11挺顶的, 但是 Windows 阵营的轻薄笔记本在续航、触控板两方面还是硬伤, 在逼格方面还是缺一点东西. macbook依然是最好的轻薄笔记本, 软硬件协同优化能力强. 参考^LaTeX配置安装大对比:TeXLive/MiKTeX、Windows/WSL、xelatex/lualatex/pdflatex编译器的速度性能详细对比 https://zhuanlan.zhihu.com/p/374491983^【DeepLearning】为Ubuntu配置CUDA+cuDNN环境 - 知乎 https://zhuanlan.zhihu.com/p/419568593^Installing texlive without root permissions from the source files - TeX - LaTeX Stack Exchange https://tex.stackexchange.com/questions/454191/installing-texlive-without-root-permissions-from-the-source-files^linux完全卸载texlive_SimonChenHere的博客-CSDN博客_linux彻底卸载texlive https://blog.csdn.net/qq_40199232/article/details/106505730


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有