我的windows电脑如何部署linux系统?帮我规划使用wsl2部署的全部过程
创建于:2025年2月24日
创建于:2025年2月24日
我的windows电脑如何部署linux系统?帮我规划使用wsl2部署的全部过程
以下是一份较为完整的在 Windows 上通过 WSL2 部署 Linux 系统的流程指南。请根据你的实际环境(Windows 版本、硬件情况)做相应调整。
检查 Windows 版本
硬件虚拟化支持
网络环境
以管理员权限打开 PowerShell 或 Windows Terminal
启用所需组件
在命令行中输入以下命令:
powershelldism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重启系统
(两种方法最终效果相同,任选一种即可。)
powershellwsl --set-default-version 2
powershellwsl --install -d Ubuntu
-d <发行版>
则默认安装最新版 Ubuntu。wsl --import
命令来指定根文件系统 tar 包,但对新手用户来说,直接从官方 Store 安装最简单。首次启动
powershellwsl -d <你的发行版名称>
更新软件源与系统
bashsudo apt-get update sudo apt-get upgrade
安装常用工具
bashsudo apt-get install git build-essential python3-pip
文件系统访问
/mnt/c
即为 C 盘,在 Linux 文件系统和 Windows 系统之间进行文件互操作非常方便。VS Code / IDE 整合
powershellwsl --list --verbose
powershellwsl --set-default <发行版名称>
powershellwsl --set-version <发行版名称> 2
powershellwsl --shutdown
powershellwsl --unregister <发行版名称>
备份/还原
%USERPROFILE%\AppData\Local\Packages\
中)。wsl --export
命令将当前发行版导出为 .tar
文件以做备份,然后后续可使用 wsl --import
还原。网络互通
localhost
访问和端口转发等 WSL 的高级用法。GPU 加速
性能与资源占用
.wslconfig
文件进行配置。
以上示例将 WSL2 限制在 4GB 内存、2 个 CPU 核心的配额。txt[wsl2] memory=4GB processors=2
通过以上步骤,你就能在 Windows 上顺利启动并使用基于 WSL2 的 Linux 环境。它几乎覆盖了从前端/后端开发、数据分析到教育科研等多数常见场景,无需再启动完整的虚拟机或双系统。
这样,你就能在 Windows 下灵活地使用 Linux 的各种命令行工具和开发环境,同时保留 Windows 的软件生态。
祝你在 WSL2 环境下开发顺利!如遇到疑难问题,可在微软官方文档或相关社区进一步查找解决方案。
我已经安装了linux子系统,需要安装conda,在wsl2的conda上创建环境,,然后在vscode上编写代码。请帮我规划详细步骤。
你已经安装了 WSL2 Linux 子系统,现在需要安装 Conda 并在 WSL2 中创建环境,然后在 VS Code 上进行 Python 开发。以下是完整的规划和详细步骤:
你可以选择安装 Miniconda(轻量版) 或 Anaconda(完整数据科学套件),这里推荐 Miniconda。
步骤:
在 WSL2 终端中运行以下命令下载 Miniconda:
bashwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
运行安装脚本
bashbash miniconda.sh
按照提示进行安装
~/miniconda3
,直接按 Enter 即可。完成安装后,激活 Conda
bashsource ~/miniconda3/bin/activate
配置 Conda 使其自动激活(可选)
bashecho "source ~/miniconda3/bin/activate" >> ~/.bashrc source ~/.bashrc
运行:
bashconda --version
如果成功安装,你会看到类似:
conda 23.x.x
建议先更新 Conda:
bashconda update -n base -c defaults conda
如果你想创建一个 Python 3.9 的新环境(比如环境名为 myenv
),运行:
bashconda create -n myenv python=3.9
每次需要使用环境时,先激活:
bashconda activate myenv
你可以安装一些必要的库,例如:
bashconda install numpy pandas matplotlib jupyter
或者安装 PyTorch、TensorFlow、Scikit-learn 等:
bashconda install pytorch torchvision torchaudio -c pytorch conda install tensorflow conda install scikit-learn
bashconda env list
你应该会看到类似:
text# conda environments: # base * ~/miniconda3 myenv ~/miniconda3/envs/myenv
如果你还没有安装 VS Code,可以在 Windows 端下载安装 VS Code。
在 Windows 端 VS Code:
Ctrl + Shift + X
)搜索 Remote - WSL
在 WSL2 终端中进入你的代码目录,例如:
bashcd ~/projects/myproject
然后运行:
bashcode .
这样 VS Code 就会在 WSL2 环境中打开。
Ctrl + Shift + P
调出命令面板,输入:
Python: Select Interpreter
myenv
)。默认情况下,VS Code 终端不会自动激活 Conda 环境,你可以手动修改 ~/.bashrc
:
bashecho "conda activate myenv" >> ~/.bashrc source ~/.bashrc
这样,每次打开终端都会自动激活 myenv
。
.py
文件,例如 main.py
:
pythonimport numpy as np import pandas as pd print("Hello, Conda in WSL2!")
Run
按钮运行代码。bashpython main.py
如果你想用 Jupyter Notebook:
bashconda install jupyter
bashjupyter notebook --no-browser --port=8888
localhost
访问:
http://localhost:8888
如果你使用 Git 进行版本控制:
bashsudo apt install git
bashgit init git add . git commit -m "Initial commit"
bashgit remote add origin https://github.com/yourusername/repo.git git push -u origin main
bash miniconda.sh
conda create -n myenv python=3.9
conda activate myenv
conda install numpy pandas
code .
这样,你就可以在 WSL2 的 Conda 环境中高效地使用 Python 进行开发,并通过 VS Code 进行代码编写和调试了!如果你有任何问题,欢迎提问。
我自己在winows上下载conda并安装可以吗?会不会造成无法再wsl2内部使用conda?
在 Windows 上安装 Conda 和在 WSL2 内部安装 Conda 是两套独立的环境,相互之间不会直接影响,但有一些需要注意的地方:
对比项 | Windows 版 Conda | WSL2 版 Conda |
---|---|---|
安装路径 | C:\Users\yourname\miniconda3 | ~/miniconda3 (WSL2 内部) |
执行方式 | cmd 、PowerShell 、Anaconda Prompt | bash / zsh in WSL2 |
Python 解释器 | Windows 原生 Python | Linux 原生 Python |
依赖管理 | 适用于 Windows 平台的库 | 适用于 Linux 平台的库 |
兼容性 | 不能直接在 WSL2 使用 | 适用于 WSL2,支持 Linux 依赖 |
⚠️ 重点:Windows 版 Conda 不能直接在 WSL2 中使用!
conda
命令不能在 WSL2 终端直接运行。如果你希望 Windows 和 WSL2 同时使用 Conda,推荐的做法是:
示例:
powershellconda activate myenv # 只在 Windows 端运行
bashconda activate myenv # 只在 WSL2 端运行
尽管可以通过 /mnt/c/Users/yourname/miniconda3
挂载 Windows 版 Conda 并尝试在 WSL2 内使用,但不建议:
如果你仍想尝试,可以在 WSL2 运行:
bashexport PATH="/mnt/c/Users/yourname/miniconda3/bin:$PATH" conda --version
但可能会遇到兼容性问题。
conda activate myenv
conda activate myenv
如果你的开发主要在 WSL2,那么建议直接在 WSL2 内部安装 Conda,而不要依赖 Windows 版 Conda。
我不小心在windows界面安装了conda,违背了我要在wsl2环境下安装conda。请帮我删除windows下的conda,包括安装软件本体,缓存文件,还有库,所有conda涉及到的一切
你可以按照以下步骤 彻底删除 Windows 版本的 Conda(Miniconda/Anaconda),包括 软件本体、环境、缓存文件以及注册表信息,确保它不会干扰 WSL2 的 Conda 版本。
在删除 Conda 之前,先确保它没有正在运行的进程。
Ctrl + Shift + Esc
)python.exe
conda.exe
jupyter.exe
anaconda.exe
或者直接在 PowerShell(管理员模式) 运行:
powershelltaskkill /IM python.exe /F taskkill /IM conda.exe /F taskkill /IM jupyter.exe /F taskkill /IM anaconda.exe /F
conda
或 Anaconda
如果你用的是 Anaconda,可以使用官方提供的卸载工具:
这将删除 Conda 相关的缓存、配置文件等。powershellanaconda-clean --yes
手动删除以下文件夹(如果存在):
C:\Users\你的用户名\Anaconda3
C:\Users\你的用户名\Miniconda3
C:\Users\你的用户名\AppData\Local\Continuum
C:\Users\你的用户名\AppData\Local\anaconda
C:\Users\你的用户名\AppData\Roaming\Anaconda
C:\ProgramData\Anaconda3
C:\ProgramData\Miniconda3
你可以在 PowerShell(管理员模式) 运行:
powershellRemove-Item -Recurse -Force C:\Users\$env:UserName\Anaconda3 Remove-Item -Recurse -Force C:\Users\$env:UserName\Miniconda3 Remove-Item -Recurse -Force C:\Users\$env:UserName\AppData\Local\Continuum Remove-Item -Recurse -Force C:\Users\$env:UserName\AppData\Local\anaconda Remove-Item -Recurse -Force C:\Users\$env:UserName\AppData\Roaming\Anaconda Remove-Item -Recurse -Force C:\ProgramData\Anaconda3 Remove-Item -Recurse -Force C:\ProgramData\Miniconda3
Conda 会自动修改 Windows 的环境变量,需要手动清理。
Win + I
)Path
变量textC:\Users\你的用户名\Anaconda3 C:\Users\你的用户名\Anaconda3\Scripts C:\Users\你的用户名\Anaconda3\Library\bin
在 PowerShell(管理员模式) 运行:
powershell[System.Environment]::SetEnvironmentVariable("Path", $env:Path -replace "C:\\Users\\$env:UserName\\Anaconda3.*?;", "", [System.EnvironmentVariableTarget]::User) [System.Environment]::SetEnvironmentVariable("Path", $env:Path -replace "C:\\Users\\$env:UserName\\Miniconda3.*?;", "", [System.EnvironmentVariableTarget]::User)
这样会自动清理掉 Conda 相关的路径。
如果你希望彻底清理 Conda 相关的注册表项:
Win + R
,输入 regedit
,回车。Ctrl + F
搜索 Anaconda 或 MinicondatextHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\Anaconda3 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall\Miniconda3
删除完成后,建议重新启动 Windows,以确保所有环境变量和进程完全清理。
在 Windows 终端运行:
powershellconda --version
如果返回 “找不到 conda”,说明删除成功。
检查环境变量
powershellecho $env:Path
确保 Anaconda3
或 Miniconda3
路径已经被移除。
打开 Windows Terminal 或 WSL2 终端:
bashwsl
bashwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
bashbash miniconda.sh
安装完成后,执行:
bashsource ~/miniconda3/bin/activate
bashecho "source ~/miniconda3/bin/activate" >> ~/.bashrc source ~/.bashrc
按照这份指南,你的 Windows Conda 将被彻底删除,并且 WSL2 端的 Conda 不会再受到干扰。如果你遇到任何问题,可以随时询问!
wsl2和conda安装好后,环境里,算上自带的python,大概有几个?
在 WSL2 和 Conda 安装完成后,你的系统中可能会有多个 Python 版本,通常包括以下几种:
默认情况下,WSL2(基于 Ubuntu 或其他 Linux 发行版)可能会预装 Python,可以通过以下命令检查:
bashpython3 --version
如果是 Ubuntu 20.04/22.04,通常会有一个 系统自带的 Python,路径通常是:
bash/usr/bin/python3
你可以通过:
bashwhich python3
确认它的路径。
安装 Miniconda/Anaconda 后,Conda 自带的默认 base
环境 也有一个 Python 版本:
bashconda activate base python --version
它的路径通常是:
bash/home/yourusername/miniconda3/bin/python
(yourusername
是你的 WSL2 用户名)
如果你用 Conda 创建了新的 Python 环境(如 myenv
),那么这个环境会有独立的 Python 版本:
bashconda create -n myenv python=3.9 conda activate myenv python --version
这个 Python 的路径通常是:
bash/home/yourusername/miniconda3/envs/myenv/bin/python
如果你曾使用 apt
安装过 Python,你可能还会有:
bashsudo apt install python3.x which python3.x
或者,如果你手动安装了 pyenv
进行 Python 版本管理,你可能还会有 pyenv
维护的 Python 版本:
bashpyenv versions
如果你 仅安装了 WSL2 + Conda,你的系统通常会有:
/usr/bin/python3
)base
环境的 Python(~/miniconda3/bin/python
)~/miniconda3/envs/myenv/bin/python
)所以,你至少会有 2~3 个 Python 版本(如果你创建了多个 Conda 环境,就会有更多)。
你可以使用 which python3
或 which python
在不同环境下检查实际使用的 Python 版本。如果你主要使用 Conda,建议始终激活相应的 Conda 环境来确保使用的是正确的 Python 解释器。
bin和usr bin中的python有啥区别
在 Linux(包括你的 WSL2 环境)中,/bin
、/usr/bin
和 /usr/local/bin
等目录都有明确区分和不同用途:
目录 | 用途(作用) | 目录属性 | 示例 |
---|---|---|---|
/bin | 存放最基础的系统可执行程序(启动、维护系统必备)。 | 系统关键 | bash , ls , cp |
/usr/bin | 存放发行版自带的常规程序(非关键但常用) | 系统软件 | python3 , git , vim |
/usr/local/bin | 存放用户自行编译、安装的软件 | 用户安装 | 用户手动安装的程序、脚本 |
/bin/python
与 /usr/bin/python
有何区别?在大部分 Linux 发行版(如 Ubuntu)上:
通常没有 /bin/python
,Python 一般位于:
/usr/bin/python 或 /usr/bin/python3
如果有 /bin/python
(极少),一般是指向 Python 的符号链接到 /usr/bin/python
:
bashls -l /bin/python # 例如输出可能为: lrwxrwxrwx 1 root root 7 Jan 1 12:00 /bin/python -> python3
因此,在 Ubuntu 上:
/usr/bin/python3
是发行版官方安装的 Python 可执行文件(系统自带或通过软件包管理工具如 apt
安装)。/bin
中一般不直接包含 Python 程序,因为 Python 通常不是系统启动或紧急维护的基础程序。Conda 安装的 Python 独立于系统 Python,不会与 /usr/bin
或 /bin
的 Python 冲突。
通常在:
bash~/miniconda3/bin/python # Conda的base环境 ~/miniconda3/envs/myenv/bin/python # Conda创建的新环境
系统 Python (/usr/bin/python3
):
Conda Python (~/miniconda3/...
):
因此,你的日常开发工作建议始终使用 Conda 环境内的 Python,避免直接使用系统 Python。
运行以下命令查看当前 Python 路径:
bashwhich python3
~/miniconda3/...
)/usr/bin/python3
)这样可以确保你明确知道使用的是哪个 Python 版本,避免混淆。
在vscode中运行wsl2,下载速度异乎寻常的慢。请问如何在此条件下使用代理,进而加速下载?
在 WSL2 中使用代理加速下载(如 apt update
、conda install
、pip install
)的步骤如下:
你需要有一个可用的代理服务器(HTTP/SOCKS5 代理),假设:
http://192.168.1.100:7890
socks5://192.168.1.100:7891
如果你使用的是 Clash/V2Ray/Qv2ray/Proxifier 等代理工具,它们通常会在 127.0.0.1:7890 或 127.0.0.1:10809 监听代理流量。
由于 WSL2 运行在 Windows 内部,但具有独立的 Linux 网络环境,你需要手动设置 WSL2 的代理。
在 WSL2 终端中运行:
bashexport http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7891"
http_proxy
/ https_proxy
用于加速 apt
、curl
、wget
all_proxy
用于 socks5
代理(适用于 Git、SSH 代理等)为了在每次打开 WSL2 时自动应用代理,编辑 ~/.bashrc
或 ~/.zshrc
:
bashnano ~/.bashrc
添加以下内容:
bashexport http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7891"
保存后,使其立即生效:
bashsource ~/.bashrc
不同的软件包管理工具需要单独配置代理。
创建并编辑 /etc/apt/apt.conf.d/proxy.conf
:
bashsudo nano /etc/apt/apt.conf.d/proxy.conf
添加:
plaintextAcquire::http::Proxy "http://127.0.0.1:7890/"; Acquire::https::Proxy "http://127.0.0.1:7890/";
然后更新:
bashsudo apt update && sudo apt upgrade
如果你使用 pip
下载 Python 包,可以在命令后添加 --proxy
选项:
bashpip install requests --proxy=http://127.0.0.1:7890
或者永久配置:
bashmkdir -p ~/.pip nano ~/.pip/pip.conf
添加:
plaintext[global] proxy = http://127.0.0.1:7890
设置 Conda 代理:
bashconda config --set proxy_servers.http http://127.0.0.1:7890 conda config --set proxy_servers.https http://127.0.0.1:7890
如果 Conda 仍然下载慢,可以使用国内镜像:
bashconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes
如果你使用 Git,并希望通过代理加速 Git 访问(如 git clone
),可以设置:
bashgit config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890
如果需要 SOCKS5 代理:
bashgit config --global http.proxy socks5://127.0.0.1:7891 git config --global https.proxy socks5://127.0.0.1:7891
测试 Git 是否使用代理:
bashgit clone https://github.com/tensorflow/tensorflow.git
如果 VS Code 连接 WSL2 也很慢,你可以在 VS Code 里设置代理:
Ctrl + ,
)http://127.0.0.1:7890
或者在 settings.json
里手动添加:
json{ "http.proxy": "http://127.0.0.1:7890", "http.proxyStrictSSL": false }
如果你想临时关闭代理,可以运行:
bashunset http_proxy unset https_proxy unset all_proxy
如果代理影响到某些程序,可以在 ~/.bashrc
里加入 alias
:
bashalias proxyon="export http_proxy='http://127.0.0.1:7890'; export https_proxy='http://127.0.0.1:7890'; export all_proxy='socks5://127.0.0.1:7891'" alias proxyoff="unset http_proxy; unset https_proxy; unset all_proxy"
之后,只需要运行:
bashproxyon # 开启代理 proxyoff # 关闭代理
使用 curl
或 wget
测试:
bashcurl -I https://www.google.com wget -O- https://www.google.com
如果输出 HTTP 响应头(如 200 OK
),说明代理生效。
bashexport http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7891"
bashecho 'export http_proxy="http://127.0.0.1:7890"' >> ~/.bashrc echo 'export https_proxy="http://127.0.0.1:7890"' >> ~/.bashrc echo 'export all_proxy="socks5://127.0.0.1:7891"' >> ~/.bashrc source ~/.bashrc
apt
:/etc/apt/apt.conf.d/proxy.conf
pip
:~/.pip/pip.conf
conda
:conda config --set proxy_servers.http ...
git
:git config --global http.proxy ...
VS Code
:设置 http.proxy
这样设置后,WSL2 在 VS Code 里运行时,下载速度应该会明显提高!如果仍然遇到问题,可以尝试换一个端口的代理或者检查 Windows 代理软件是否允许 WSL2 访问。
激活代理后,所有环境下都会被激活吗?还是说只有特别环境下会激活?如何激活环境?
在 WSL2 中激活代理后,其生效范围取决于你如何配置代理:
下面详细说明如何在不同环境下控制代理的激活。
如果你只是直接在终端中运行以下命令:
bashexport http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7891"
关闭临时代理:
bashunset http_proxy unset https_proxy unset all_proxy
如果你希望代理在所有终端窗口和环境下生效,可以将代理配置写入到 shell 启动脚本中。
~/.bashrc
(或 ~/.zshrc
如果你使用的是 Zsh):
bashnano ~/.bashrc
bashexport http_proxy="http://127.0.0.1:7890" export https_proxy="http://127.0.0.1:7890" export all_proxy="socks5://127.0.0.1:7891"
bashsource ~/.bashrc
bashecho $http_proxy echo $https_proxy echo $all_proxy
如果能看到代理地址(例如 http://127.0.0.1:7890
),说明代理已经全局生效。
有时候你可能不希望代理全局生效,而是只让某些工具(如 pip
、conda
、git
、apt
等)使用代理。
编辑 apt 配置文件:
bashsudo nano /etc/apt/apt.conf.d/proxy.conf
添加:
plaintextAcquire::http::Proxy "http://127.0.0.1:7890/"; Acquire::https::Proxy "http://127.0.0.1:7890/";
创建 pip 配置文件:
bashmkdir -p ~/.pip nano ~/.pip/pip.conf
添加:
ini[global] proxy = http://127.0.0.1:7890
直接运行以下命令:
bashconda config --set proxy_servers.http http://127.0.0.1:7890 conda config --set proxy_servers.https http://127.0.0.1:7890
为 Git 设置代理:
bashgit config --global http.proxy http://127.0.0.1:7890 git config --global https.proxy http://127.0.0.1:7890
如果需要取消:
bashgit config --global --unset http.proxy git config --global --unset https.proxy
如果你使用 Conda 环境,可以为每个环境分别设置代理。
bashconda create -n myenv python=3.9 conda activate myenv # 为该环境设置代理 conda config --env --set proxy_servers.http http://127.0.0.1:7890 conda config --env --set proxy_servers.https http://127.0.0.1:7890
--env
选项确保代理只在 myenv
环境中生效。bashconda config --show
bashconda config --env --remove-key proxy_servers.http conda config --env --remove-key proxy_servers.https
在 ~/.bashrc
或 ~/.zshrc
中添加:
bashalias proxyon='export http_proxy="http://127.0.0.1:7890"; export https_proxy="http://127.0.0.1:7890"; export all_proxy="socks5://127.0.0.1:7891"' alias proxyoff='unset http_proxy; unset https_proxy; unset all_proxy'
加载配置:
bashsource ~/.bashrc
之后,只需要使用:
bashproxyon # 开启代理 proxyoff # 关闭代理
配置方式 | 生效范围 | 关闭方法 |
---|---|---|
export 命令 | 当前终端窗口 | unset 变量或关闭终端 |
.bashrc 修改 | 所有终端窗口(永久) | 删除配置行+source ~/.bashrc |
工具内部配置 | 指定工具(pip/conda/git) | 直接删除/修改配置文件 |
Conda 环境配置 | 指定 Conda 环境 | conda config --env --remove-key |
代理别名 | 快捷切换全局代理状态 | 使用 proxyoff |
验证环境变量:
bashecho $http_proxy echo $https_proxy
验证代理连通性:
bashcurl -I https://www.google.com wget -O- https://www.google.com
验证 pip 是否走代理:
bashpip install requests -v
验证 Conda 是否使用代理:
bashconda info
查看当前代理状态(如果有):
bashenv | grep -i proxy
部分网站代理后无法访问:
proxyoff
。Conda 使用代理后仍然慢:
SSH、Git 等使用 SOCKS5 代理:
all_proxy="socks5://..."
。proxyon
和 proxyoff
别名。conda config --env
。这样,你就可以灵活管理 WSL2 中的代理,在不同环境下按需激活代理,加速下载的同时避免不必要的网络冲突。
(ai_assistant_3.10p) (base) loskeylee@LoskeyPC:/Myprojects/AI assistant pip install pandas/Myprojects/AI assistant$
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f7aa4943a00>: Failed to establish a new connection: [Errno 111] Connection refused'))': /simple/pandas/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f7aa4943ca0>: Failed to establish a new connection: [Errno 111] Connection refused'))': /simple/pandas/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f7aa4943d60>: Failed to establish a new connection: [Errno 111] Connection refused'))': /simple/pandas/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f7aa4943fa0>: Failed to establish a new connection: [Errno 111] Connection refused'))': /simple/pandas/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f7aa4943fd0>: Failed to establish a new connection: [Errno 111] Connection refused'))': /simple/pandas/
ERROR: Could not find a version that satisfies the requirement pandas (from versions: none)
ERROR: No matching distribution found for pandas
(ai_assistant_3.10p) (base) loskeylee@LoskeyPC:
你的 pip 代理设置可能存在问题,导致 pip install pandas
失败,错误提示 ProxyError('Cannot connect to proxy.')
表示 WSL2 无法连接到 127.0.0.1:50516(HTTP 代理)和 127.0.0.1:50518(SOCKS5 代理)。
代理服务器未运行或监听端口错误
WSL2 不能直接访问 127.0.0.1
127.0.0.1
只指向 WSL2 本身,而不是 Windows 主机的 127.0.0.1
。127.0.0.1
。防火墙阻止了 WSL2 访问 Windows 的代理
powershellnetsh advfirewall set allprofiles state off
powershellnetsh advfirewall set allprofiles state on
获取 Windows 主机的 IP 在 Windows 的 PowerShell 运行:
powershellipconfig | findstr /i "IPv4"
你会看到类似:
IPv4 地址 . . . . . . . . . . . . : 192.168.1.100
(你的 IP 可能不同,请替换 192.168.1.100
)
在 WSL2 设置代理(用 Windows IP 替换 127.0.0.1)
bashexport https_proxy="http://192.168.1.100:50516" export http_proxy="http://192.168.1.100:50516" export all_proxy="socks5://192.168.1.100:50518"
之后 重新尝试 pip install pandas
:
bashpip install pandas
让代理永久生效(可选)
如果代理可用,可以将其添加到 ~/.bashrc
或 ~/.zshrc
:
bashecho 'export https_proxy="http://192.168.1.100:50516"' >> ~/.bashrc echo 'export http_proxy="http://192.168.1.100:50516"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.100:50518"' >> ~/.bashrc source ~/.bashrc
如果你使用 Clash、V2Ray、Proxifier,但不想改 Windows IP,可以:
在 Clash/V2Ray 设置 "允许局域网访问":
Profiles
→ 设置
里 开启 LAN 访问config.yaml
添加:
yamlallow-lan: true bind-address: "*"
0.0.0.0:50516
,WSL2 就能访问 127.0.0.1:50516
。确认 Clash/V2Ray 是否监听正确端口
powershellnetstat -ano | findstr :50516
尝试 WSL2 重新设置代理
bashexport https_proxy="http://127.0.0.1:50516" export http_proxy="http://127.0.0.1:50516" export all_proxy="socks5://127.0.0.1:50518"
再次运行 pip install pandas
bashpip install pandas
如果你只是为了加速 Python 包下载,而 不想用代理,可以直接换国内镜像源:
bashpip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install pandas
或者:
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
这样会直接从 清华源 下载,而不走代理。
如果你希望确保代理可用,可以运行:
bashcurl -I https://www.google.com wget -O- https://www.google.com
如果代理正常,你应该能看到 HTTP 响应 200 OK
。
✅ 方法 1(使用 Windows IP) 最稳定,可确保 WSL2 访问 Windows 代理。
✅ 方法 3(使用国内镜像) 适合 Python 用户,不用代理也能加速。
🔹 如果 WSL2 不能直接用 127.0.0.1:50516
,说明需要用 Windows IP!
PS C:\WINDOWS\system32> ipconfig | findstr /i "IPv4"
IPv4 ?? . . . . . . . . . . . . : 172.24.32.1
IPv4 ?? . . . . . . . . . . . . : 192.168.1.2
IPv4 ?? . . . . . . . . . . . . : 172.27.64.1这几个哪个是我的ip
你的 Windows 主机的 IP 地址 应该是 192.168.1.2
。
192.168.x.x
或 10.x.x.x
:通常是你连接到 WiFi 或以太网的本地局域网 IP,这个 IP 可以用于 WSL2 访问 Windows 主机。172.24.x.x
和 172.27.x.x
:这些是 WSL2 生成的虚拟网络地址,不能直接用于代理。192.168.1.2
可用于 WSL2 代理?在 WSL2 终端 运行:
bashping 192.168.1.2
如果有 正常的 ICMP 响应(比如 time=1ms
之类的),说明 WSL2 可以访问这个 IP,你可以在 WSL2 设置代理时使用它。
在 WSL2 终端 运行:
bashexport https_proxy="http://192.168.1.2:50516" export http_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518"
然后再尝试:
bashpip install pandas
如果成功,建议把代理设置写入 ~/.bashrc
让其永久生效:
bashecho 'export https_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export http_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.2:50518"' >> ~/.bashrc source ~/.bashrc
确认 Windows 代理工具(Clash/V2Ray)是否启用了 LAN 访问
Windows 防火墙可能阻止 WSL2 访问代理
powershellnetsh advfirewall set allprofiles state off
pip install pandas
powershellnetsh advfirewall set allprofiles state on
如果仍然无法使用代理,可以 直接使用国内源:
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
这样会从 清华镜像源 下载,不走代理。
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
To run a command as administrator (user "root"), use "sudo <command>".
你的 WSL2 出现 "检测到 localhost 代理配置,但未镜像到 WSL" 的错误,说明 WSL2 不能直接使用 127.0.0.1
作为代理,需要使用 Windows 主机的实际 IP 地址 来配置代理。
在 Windows PowerShell 运行:
powershellipconfig | findstr /i "IPv4"
你会看到类似:
IPv4 地址 . . . . . . . . . . . . : 192.168.1.2
你的 Windows 主机 IP 是 192.168.1.2
(请使用你实际查到的 IP)。
在 WSL2 终端 运行:
bashexport http_proxy="http://192.168.1.2:50516" export https_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518"
然后尝试:
bashpip install pandas
如果下载速度快了,说明代理生效了。
如果你不想每次都手动输入代理,可以把代理配置写入 ~/.bashrc
:
bashecho 'export http_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export https_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.2:50518"' >> ~/.bashrc source ~/.bashrc
如果 WSL2 还是无法访问代理,你需要检查你的代理软件(Clash、V2Ray、Proxifier)是否允许 LAN 访问:
allow-lan
选项,并启用
yamlallow-lan: true bind-address: "*"
config.json
"inbounds"
里添加:
json{ "port": 10809, "listen": "0.0.0.0", "protocol": "socks", "settings": { "udp": true } }
有时候 Windows 防火墙可能阻止 WSL2 访问代理,可以尝试临时关闭防火墙:
powershellnetsh advfirewall set allprofiles state off
然后在 WSL2 里重新尝试 pip install pandas
。
如果代理能用,说明是防火墙问题,记得重新开启防火墙:
powershellnetsh advfirewall set allprofiles state on
127.0.0.1
,用 Windows 实际 IP(ipconfig
获取)bashexport http_proxy="http://192.168.1.2:50516" export https_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518"
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
这样 WSL2 代理应该就能正常工作了!🚀
wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
(base) loskeylee@LoskeyPC:~ pip install pandas
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f4c7374c290>, 'Connection to 192.168.1.2 timed out. (connect timeout=15)')': /simple/pandas/
你的 WSL2 仍然无法连接代理,并且报错:
Connection to 192.168.1.2 timed out. (connect timeout=15)
说明:
export
命令中 all_proxy
配置的 IP 地址 196.128.1.2
可能有错(应该是 192.168.1.2
)powershellnetstat -ano | findstr :50516
如果 没有输出,说明你的代理工具(Clash、V2Ray、Proxifier)没有监听 50516 端口。
解决方案:
如果使用 Clash,请确保在 Settings
里 启用了 Allow LAN:
0.0.0.0
或 192.168.1.2
如果使用 V2Ray,确保配置 config.json
:
json{ "inbounds": [ { "port": 50516, "listen": "0.0.0.0", "protocol": "http", "settings": {} }, { "port": 50518, "listen": "0.0.0.0", "protocol": "socks", "settings": {} } ] }
然后重启 V2Ray。
powershellnetstat -ano | findstr :50516
如果输出:
TCP 0.0.0.0:50516 0.0.0.0:0 LISTENING
说明 Windows 代理已正常监听端口。
在 Windows 管理员模式的 PowerShell 运行:
powershellnetsh advfirewall set allprofiles state off
然后 在 WSL2 里再次尝试 pip install pandas
。
如果成功,说明 是防火墙拦截了 WSL2 访问代理端口,你可以重新打开防火墙:
powershellnetsh advfirewall set allprofiles state on
但需要手动允许 50516 端口的流量。
你在 export
里可能打错了 all_proxy
的 IP:
bashexport https_proxy="http://192.168.1.2:50516" export http_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518" # 这里原来写错了 "196.128.1.2"
然后再尝试:
bashpip install pandas
运行:
bashcurl -I http://192.168.1.2:50516
如果代理工作正常,你应该看到 HTTP 响应:
HTTP/1.1 200 OK
如果超时,说明 WSL2 仍然无法访问 Windows 代理,需要检查 代理软件是否监听 0.0.0.0
或 192.168.1.2
。
如果你只是想加速 pip install pandas
,可以直接使用 国内源:
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
这样就不会依赖代理,而是从清华大学的镜像下载,通常速度很快。
0.0.0.0:50516
或 192.168.1.2:50516
netstat -ano | findstr :50516
确认端口是否监听netsh advfirewall set allprofiles state off
export
代理设置,确保 all_proxy
正确pip
镜像按照以上步骤,你应该能成功让 WSL2 通过 Windows 代理加速下载了!🚀
我使用的是土星通讯vpn,有全局和规格两种模式。全局模式又有reject和direct两种模式。如何配置,才能让我的wsl2使用vpn流量快速下载?我的IP好像是192.168.1.2
你的 土星通讯 VPN 有 全局模式(包含 Reject 和 Direct)以及 规则模式,你希望让 WSL2 通过 VPN 流量加速下载。下面是最佳的配置方案。
你的 土星通讯 VPN 可能提供 本地代理服务(HTTP 或 SOCKS5 代理)。你需要找到 VPN 的 本地代理端口,通常可以在 VPN 设置 里找到,或者用以下方法检测。
127.0.0.1:10809
)127.0.0.1:10808
)powershellnetstat -ano | findstr LISTEN
查找 VPN 监听的端口,比如:
textTCP 127.0.0.1:10809 0.0.0.0:0 LISTENING TCP 127.0.0.1:10808 0.0.0.0:0 LISTENING
如果 VPN 监听了 127.0.0.1:10809
,说明这个是 HTTP 代理;监听 127.0.0.1:10808
,则是 SOCKS5 代理。
由于 WSL2 不能直接使用 127.0.0.1
访问 Windows 代理,你需要用 Windows 的实际 IP(192.168.1.2
)来设置代理。
在 WSL2 终端输入:
bashexport http_proxy="http://192.168.1.2:10809" export https_proxy="http://192.168.1.2:10809" export all_proxy="socks5://192.168.1.2:10808"
(替换 10809
和 10808
为你的 VPN 代理端口)
然后测试:
bashcurl -I https://www.google.com
如果返回 200 OK
,说明 WSL2 成功通过 VPN 访问互联网。
土星通讯 VPN 提供了 3 种模式,你应该如何选择?
模式 | 适合 WSL2 代理? | 说明 |
---|---|---|
规则模式 | ✅ 推荐 | 只让需要科学上网的软件走 VPN,WSL2 代理可用。 |
全局模式(Reject) | ❌ 不推荐 | 阻止本地代理流量,WSL2 可能无法连接代理。 |
全局模式(Direct) | ✅ 可选 | 所有流量都走 VPN,但 WSL2 需要手动设置代理。 |
如果 规则模式下载仍然很慢,可以尝试 全局模式(Direct),然后 WSL2 仍然使用代理。
如果测试成功,建议把代理设置写入 ~/.bashrc
,这样 WSL2 每次启动都会自动使用 VPN。
bashecho 'export http_proxy="http://192.168.1.2:10809"' >> ~/.bashrc echo 'export https_proxy="http://192.168.1.2:10809"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.2:10808"' >> ~/.bashrc source ~/.bashrc
然后你可以运行:
bashpip install pandas
如果速度快了,说明 VPN 代理生效。
如果 WSL2 仍然无法访问代理,尝试在 Windows 管理员模式的 PowerShell 运行:
powershellnetsh advfirewall set allprofiles state off
然后在 WSL2 测试:
bashcurl -I https://www.google.com
如果成功,说明 防火墙拦截了 WSL2 访问 VPN 代理,可以重新打开防火墙:
powershellnetsh advfirewall set allprofiles state on
但需要 手动允许 10809 和 10808 端口的流量。
如果你只是想 加速 pip 下载,可以直接改用国内镜像,而不是走 VPN:
bashpip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install pandas
这样 即使 WSL2 代理不可用,下载速度也会变快。
10809
或 10808
)bashexport http_proxy="http://192.168.1.2:10809" export https_proxy="http://192.168.1.2:10809" export all_proxy="socks5://192.168.1.2:10808"
bashcurl -I https://www.google.com
bashecho 'export http_proxy="http://192.168.1.2:10809"' >> ~/.bashrc echo 'export https_proxy="http://192.168.1.2:10809"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.2:10808"' >> ~/.bashrc source ~/.bashrc
powershellnetsh advfirewall set allprofiles state off
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
这样,你的 WSL2 就可以流畅地通过 土星通讯 VPN 下载文件了!🚀
PS C:\WINDOWS\system32> netstat -ano | findstr LISTEN
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 1692
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4
TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING 1444
TCP 0.0.0.0:2179 0.0.0.0:0 LISTENING 2792
TCP 0.0.0.0:5040 0.0.0.0:0 LISTENING 7716
TCP 0.0.0.0:49664 0.0.0.0:0 LISTENING 1472
TCP 0.0.0.0:49665 0.0.0.0:0 LISTENING 1376
TCP 0.0.0.0:49666 0.0.0.0:0 LISTENING 2268
TCP 0.0.0.0:49868 0.0.0.0:0 LISTENING 4380
TCP 0.0.0.0:49869 0.0.0.0:0 LISTENING 5136
TCP 127.0.0.1:1401 0.0.0.0:0 LISTENING 14868
TCP 127.0.0.1:4214 0.0.0.0:0 LISTENING 17544
TCP 127.0.0.1:45181 0.0.0.0:0 LISTENING 15488
TCP 127.0.0.1:50516 0.0.0.0:0 LISTENING 14668
TCP 127.0.0.1:50518 0.0.0.0:0 LISTENING 14668
TCP 127.0.0.1:50519 0.0.0.0:0 LISTENING 14668
TCP 127.0.0.1:53799 0.0.0.0:0 LISTENING 10112
TCP 172.24.32.1:139 0.0.0.0:0 LISTENING 4
TCP 172.27.64.1:139 0.0.0.0:0 LISTENING 4
TCP 192.168.1.2:139 0.0.0.0:0 LISTENING 4
TCP [::]:135 [::]:0 LISTENING 1692
TCP [::]:445 [::]:0 LISTENING 4
TCP [::]:1026 [::]:0 LISTENING 1444
TCP [::]:2179 [::]:0 LISTENING 2792
TCP [::]:49664 [::]:0 LISTENING 1472
TCP [::]:49665 [::]:0 LISTENING 1376
TCP [::]:49666 [::]:0 LISTENING 2268
TCP [::]:49868 [::]:0 LISTENING 4380
TCP [::]:49869 [::]:0 LISTENING 5136
TCP [::1]:1024 [::]:0 LISTENING 6180
PS C:\WINDOWS\system32>
从 netstat
输出来看,你的 土星通讯 VPN 的代理端口 50516
(HTTP 代理)和 50518
(SOCKS5 代理) 都只在 127.0.0.1
(本地回环地址) 上监听,WSL2 无法直接访问。
127.0.0.1:50516
和 127.0.0.1:50518
只在 Windows 本地 有效。127.0.0.1
。0.0.0.0
或 192.168.1.2
才能被 WSL2 访问。0.0.0.0
或 192.168.1.2
0.0.0.0
会让代理在 所有网络接口 上监听,包括 WSL2192.168.1.2
只在局域网中监听,也能被 WSL2 访问在 Windows PowerShell 重新运行:
powershellnetstat -ano | findstr :50516
如果看到:
TCP 0.0.0.0:50516 0.0.0.0:0 LISTENING
或者:
TCP 192.168.1.2:50516 0.0.0.0:0 LISTENING
说明 VPN 的 HTTP 代理 已在 局域网可访问的 IP 地址 上监听,WSL2 可以访问。
bashexport http_proxy="http://192.168.1.2:50516" export https_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518"
然后 重新测试下载速度:
bashpip install pandas
如果下载速度明显加快,说明 代理配置成功。
如果一切正常,你可以将配置 写入 ~/.bashrc
让代理永久生效:
bashecho 'export http_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export https_proxy="http://192.168.1.2:50516"' >> ~/.bashrc echo 'export all_proxy="socks5://192.168.1.2:50518"' >> ~/.bashrc source ~/.bashrc
bashcurl -I https://www.google.com
如果返回 200 OK
,说明 代理已成功生效。
如果仍然无法连接,尝试临时关闭 Windows 防火墙:
powershellnetsh advfirewall set allprofiles state off
然后 重新测试 pip install pandas
如果下载成功后,请重新打开防火墙:
powershellnetsh advfirewall set allprofiles state on
如果你不想配置代理,可以直接用国内源加速下载:
bashpip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
0.0.0.0
或 192.168.1.2
bashexport http_proxy="http://192.168.1.2:50516" export https_proxy="http://192.168.1.2:50516" export all_proxy="socks5://192.168.1.2:50518"
bashpip install pandas
~/.bashrc
让代理永久生效这样,你的 WSL2 就可以通过土星通讯 VPN 快速下载 了!🚀
我的vpn不允许 LAN 访问怎么办?有什么其余方法让wls2使用vpn2快速访问吗
如果你的 土星通讯 VPN 不允许 LAN 访问,但你仍然希望 让 WSL2 通过 VPN 加速访问网络,可以使用以下几种方法:
如果你的 VPN 只在 Windows 端生效,但不允许局域网访问,你可以 使用 Proxifier(或 ProxyCap) 把 WSL2 的流量转发到 VPN。
安装 Proxifier(或 ProxyCap)
在 Proxifier 里添加 VPN 代理
127.0.0.1:50516
或 127.0.0.1:10809
)
127.0.0.1
50518
)为 WSL2 设置规则
WSL2
C:\Windows\System32\wsl.exe
测试代理是否生效 在 WSL2 运行:
bashcurl -I https://www.google.com
如果返回 200 OK
,说明 WSL2 已成功通过 VPN 访问网络!
如果你无法使用代理转发工具,可以 通过 Windows 自带的“Internet 连接共享 (ICS)” 让 WSL2 走 VPN 流量。
打开 Windows “网络连接”
Win + R
,输入 ncpa.cpl
,回车启用 Internet 共享
重启 WSL2 网络
bashsudo ip route add default via 192.168.137.1 dev eth0
192.168.137.1
是 Windows 共享的默认网关(如果不对,可以用 ipconfig
查找)测试是否成功
bashcurl -I https://www.google.com
如果返回 200 OK
,说明 WSL2 已成功通过 Windows 共享 VPN 流量。
wsl-vpnkit
(WSL2 透明走 VPN)如果你的 VPN 无法代理,你可以 让 WSL2 直接使用 Windows VPN 的网络,方法是使用 wsl-vpnkit
工具。
安装 wsl-vpnkit
在 Windows PowerShell(管理员模式) 运行:
powershellwsl --shutdown wsl --update wsl --install -d Ubuntu wsl --set-default-version 2
然后安装 wsl-vpnkit
:
powershellwsl --install -d Ubuntu sudo apt update sudo apt install git -y git clone https://github.com/sakai135/wsl-vpnkit.git cd wsl-vpnkit ./wsl-vpnkit start
启动 WSL2
bash./wsl-vpnkit start
这会让 WSL2 直接使用 Windows VPN 连接。
测试 VPN 是否生效
bashcurl -I https://www.google.com
如果你只是想加速 pip install pandas
,可以 直接使用国内源,而不是 VPN:
bashpip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install pandas
这样 pip install
不会再走 VPN,下载速度会更快。
方案 | 适用情况 | 优点 | 难度 |
---|---|---|---|
方案 1:Proxifier 代理 | VPN 没有 LAN 访问,但有本地代理端口 | 最简单,无需更改 VPN 设置 | ⭐⭐ |
方案 2:Windows ICS(共享网络) | VPN 没有代理,但可以共享网络 | 全流量走 VPN,无需配置 WSL2 | ⭐⭐⭐ |
方案 3:wsl-vpnkit | VPN 不支持代理,但希望 WSL2 用 Windows VPN | 透明使用 Windows VPN,无需额外设置 | ⭐⭐⭐⭐ |
方案 4:国内源加速 | 只想加速 pip install | 简单易用,不需要 VPN | ⭐ |
如果 VPN 提供本地代理端口(如 127.0.0.1:50516
):
http_proxy
如果 VPN 没有代理,但支持“网络共享”
如果 VPN 也不能共享网络
wsl-vpnkit
让 WSL2 透明使用 Windows VPN如果你只是想加速 pip install pandas
https://pypi.tuna.tsinghua.edu.cn/simple
)这样,即使你的 VPN 不允许 LAN 访问,WSL2 也可以流畅访问 VPN 流量,提升下载速度!🚀
为什么虚拟环境后面有个base(ai_assistant_3.10p) (base) loskeylee@LoskeyPC:~/Myprojects/AI assistant$ pip install
你的 WSL2 终端中显示的 (ai_assistant_3.10p) (base)
说明 当前同时激活了两个 Conda 环境:
(ai_assistant_3.10p) (base) loskeylee@LoskeyPC:~/Myprojects/AI assistant$
(ai_assistant_3.10p)
:你手动激活的 Conda 虚拟环境(你创建的环境)。(base)
:Conda 默认的 base
环境仍然处于激活状态。(base)
?Conda 默认会自动激活 base
环境
base
环境,并在终端前面显示 (base)
。.bashrc
或 .zshrc
里有自动激活设置。你可能手动激活了另一个 Conda 环境
bashconda activate ai_assistant_3.10p
base
环境仍然被激活,所以两个环境的名称都显示出来了。base
自动激活如果你不希望 base
环境自动激活,可以关闭:
bashconda config --set auto_activate_base false
然后重新启动 WSL2 终端,(base) 就不会再显示。
如果你想手动启用 base
,可以输入:
bashconda activate base
如果你希望只激活 ai_assistant_3.10p
而不让 (base)
显示,你需要先退出 base
,然后再切换:
bashconda deactivate # 先退出所有 Conda 环境 conda activate ai_assistant_3.10p # 只激活你的环境
这样终端前面应该只会显示:
(ai_assistant_3.10p) loskeylee@LoskeyPC:~/Myprojects/AI assistant$
base
如果你不希望 base
环境影响其他环境,可以:
bashconda deactivate
然后手动进入你的项目目录,并直接激活你的环境:
bashcd ~/Myprojects/AI assistant conda activate ai_assistant_3.10p
问题 | 解决方案 |
---|---|
base 环境自动加载 | 运行 conda config --set auto_activate_base false 关闭自动激活 |
同时显示 (base) 和 (ai_assistant_3.10p) | 运行 conda deactivate 后 conda activate ai_assistant_3.10p |
只想使用某个环境 | 每次用 conda activate <环境名> 激活所需环境 |
这样,你的 WSL2 终端就不会再同时显示 (base)
和你的虚拟环境了!🚀
如何删除已经安装的所有库?
如果你想 删除 Conda 环境中的所有已安装库,有 两种方法:
最干净的方式是直接删除并重新创建环境,这样可以完全清除所有库。
bashconda deactivate # 先退出环境 conda remove --name ai_assistant_3.10p --all # 删除环境
bashconda create --name ai_assistant_3.10p python=3.10 conda activate ai_assistant_3.10p
这样,环境会回到初始状态,仅包含 Python。
如果你不想删除整个环境,而只是删除环境中的所有库,可以使用以下命令:
bashconda list
bashconda remove --name ai_assistant_3.10p --all
或者,你可以手动清除 Python 库:
bashpip freeze | xargs pip uninstall -y
这会删除所有 pip
安装的库,但不会影响 conda
安装的库。
如果你删除了大量库或环境后,想清理 Conda 的缓存文件:
bashconda clean --all
这可以释放磁盘空间,提高 Conda 的运行效率。
方案 | 适用情况 | 命令 |
---|---|---|
删除整个环境(推荐) | 完全清理,确保环境干净 | conda remove --name myenv --all |
仅删除所有库 | 保留环境但清空所有库 | `pip freeze |
清理 Conda 缓存 | 释放磁盘空间 | conda clean --all |
如果你不怕重新安装环境,推荐 方法 1
(删除环境后重新创建),这样最干净!🚀
同时激活两个环境,pip安装只会安装在第1个环境中吗
在 Conda 中同时显示多个环境(如 (base) (ai_assistant_3.10p)
),并使用 pip
安装库时,安装的库只会安装在第一个激活的环境中。
例如:
(base) (ai_assistant_3.10p) user@PC:~$ pip install pandas
在这种情况下,pip install pandas
会被安装在 第一个激活的环境(即 base
环境)中,而不是 ai_assistant_3.10p
环境中。
pip
使用。PATH
优先级:pip
会使用 PATH
中最先匹配到的 Python 解释器。pip
安装到正确的环境中?在终端中只激活你想使用的环境,例如:
bashconda deactivate conda activate ai_assistant_3.10p pip install pandas
这样 pandas
会被安装到 ai_assistant_3.10p
环境中。
which pip
检查 pip
所属环境你可以用以下命令来验证 pip
当前属于哪个环境:
bashwhich pip
输出路径应该类似于:
/home/yourname/miniconda3/envs/ai_assistant_3.10p/bin/pip
如果路径属于 base
,说明库会被安装在 base
环境中。
pip
即使当前激活了多个环境,你也可以显式指定目标环境下的 pip
安装库:
bash/home/yourname/miniconda3/envs/ai_assistant_3.10p/bin/pip install pandas
这样可以确保 pandas
安装到 ai_assistant_3.10p
环境中,而不会影响 base
环境。
pip install
只会安装在第一个激活的环境中。pip
进行安装。which pip
检查 pip
安装路径,确保安装到正确的环境。这样可以避免库被安装到错误的环境中,保证你的项目环境干净独立!🚀
conda config --set auto_activate_base false在哪个终端运行?
conda config --set auto_activate_base false
命令应该在 Conda 环境终端 中运行,例如:如果你在 WSL2 中使用 Conda:
bashconda config --set auto_activate_base false
bashconda
bashconda config --set auto_activate_base false
bashconda config --set auto_activate_base false
PATH
中。bashconda config --set auto_activate_base false
运行成功后,新开终端不会自动激活 base
环境。你可以用以下命令验证:
bashconda info --show base
如果输出为 auto_activate_base: False
,说明设置已生效。
这样每次打开终端时,Conda 不会自动激活 base
环境,你可以手动激活需要的环境,保持更加干净的工作环境。
(base) loskeylee@LoskeyPC:~
你的命令中存在错误,conda info --show base
并不是正确的命令。
要检查 auto_activate_base
的设置是否生效,可以使用以下正确的命令:
bashconda config --show
输出结果中查找:
auto_activate_base: False
如果显示 False
,说明 base
自动激活已被关闭。
auto_activate_base
配置项你也可以使用更简洁的命令:
bashconda config --show auto_activate_base
如果输出:
auto_activate_base: False
说明设置已生效。
base
环境是否自动激活(base)
,说明 auto_activate_base: False
设置已成功。这样可以确认你的 Conda 是否正确配置了不自动激活 base
环境。🚀
(base) loskeylee@LoskeyPC:~$ conda config --show
add_anaconda_token: True
add_pip_as_python_dependency: True
aggressive_update_packages:
你的 auto_activate_base: False
设置已经生效,这意味着 Conda 不会在新终端打开时自动激活 base
环境。
但如果你的终端仍然显示 (base)
,可能是因为:
conda config
设置后并没有重新启动。.bashrc
或 .zshrc
里手动添加了 conda activate base
,导致 base
仍然被激活。由于 auto_activate_base: False
设置不会影响已经打开的终端,你需要:
bashexit # 退出 WSL2 终端
然后重新启动 WSL2,检查 (base)
是否还显示。
.bashrc
或 .zshrc
是否有 conda activate base
有时用户会手动在 .bashrc
里写入 conda activate base
,导致 base
仍然自动加载。
.bashrc
运行:
bashcat ~/.bashrc | grep conda
如果你看到:
bashconda activate base
那么你需要 手动删除该行:
bashnano ~/.bashrc
找到 conda activate base
,删除这一行,然后保存 (Ctrl + X
→ Y
→ Enter
)。
然后重新加载 .bashrc
:
bashsource ~/.bashrc
同样的步骤:
bashnano ~/.zshrc
删除 conda activate base
,然后:
bashsource ~/.zshrc
base
没有被手动激活即使 auto_activate_base
已关闭,你仍然可以手动运行:
bashconda deactivate
如果 (base)
消失了,说明 base
是被 Conda 激活的,而不是自动加载的。
(base)
是否仍然存在。(base)
还在,运行:
bashconda deactivate
(base)
还是出现,检查 .bashrc
/ .zshrc
里是否有 conda activate base
,并删除。这样,每次打开 WSL2 终端时,Conda 的 base
环境都不会自动激活了!🚀
(base) loskeylee@LoskeyPC:~
你的 ~/.bashrc
文件中包含:
bashsource ~/miniconda3/bin/activate
这行代码 会自动激活 base
环境,即使 conda config --set auto_activate_base false
也不会生效。
source ~/miniconda3/bin/activate
.bashrc
文件
bashnano ~/.bashrc
bashsource ~/miniconda3/bin/activate
#
注释)
bash# source ~/miniconda3/bin/activate
Ctrl + X
Y
(确认保存)Enter
(退出).bashrc
运行:
bashsource ~/.bashrc
然后关闭 WSL2 终端,重新打开一个新的 WSL2 终端,看看 (base)
是否仍然显示。
如果 (base)
不再显示,说明问题已经解决 🎉。
移除 source ~/miniconda3/bin/activate
之后,conda
仍然可以使用,只是不会自动激活 base
了。如果你需要 base
环境,可以手动运行:
bashconda activate base
🔹 你现在的情况
auto_activate_base: False
已生效~/.bashrc
仍然强制加载 Conda,导致 base
被激活🔹 解决方法
source ~/miniconda3/bin/activate
.bashrc
这样,WSL2 终端启动时 不会再自动进入 (base)
环境,你需要时可以手动激活 conda activate base
!🚀
如何让wsl2读取在windows本地的文件目录?有什么快捷的方法吗
在 WSL2 中,你可以 直接访问 Windows 目录,并且有多个快捷方法来打开或浏览 Windows 文件。
/mnt/c/
访问 Windows 目录WSL2 自动挂载 Windows 磁盘,Windows C:
盘在 WSL2 中映射为 /mnt/c/
。
📌 示例:访问 Windows C:\Users\你的用户名\Documents
目录
bashcd /mnt/c/Users/你的用户名/Documents ls
或者访问 D 盘:
bashcd /mnt/d/
快捷方式:
bashcd /mnt/c/Users/$USER/Documents # $USER 变量代表你的 Windows 用户名
如果你在 WSL2 终端里,想快速打开当前目录到 Windows 文件管理器,使用:
bashexplorer.exe .
示例
bashcd /mnt/c/Users/你的用户名/Documents explorer.exe .
这会在 Windows 资源管理器 中打开 该文件夹。
在 Windows 文件管理器 的地址栏中输入:
\\wsl$
然后按 Enter
,你会看到 WSL2 的 Linux 文件系统,可以像普通 Windows 文件夹一样使用。
你也可以直接访问 WSL2 内的 用户目录:
\\wsl$\Ubuntu-22.04\home\你的WSL用户名
其中 Ubuntu-22.04
是你的 WSL2 发行版名称。
你可以在 Windows PowerShell 或 CMD 里运行:
powershellwsl
然后在 WSL2 终端中执行 cd
进入 Windows 目录:
bashcd /mnt/c/Users/你的用户名/Documents
如果你经常要访问 Windows 目录,可以创建一个快捷命令:
在 WSL2 终端运行:
bashecho 'alias winhome="cd /mnt/c/Users/你的用户名"' >> ~/.bashrc source ~/.bashrc
然后只需运行:
bashwinhome
就能快速进入 Windows C:\Users\你的用户名
目录。
如果你想在 Windows 终端(PowerShell)中快速打开 WSL2 目录:
powershellexplorer.exe \\wsl$\Ubuntu-22.04\home\你的WSL用户名
这样就能直接在 Windows 资源管理器中访问 WSL2 目录。
方法 | 作用 | 命令/路径 |
---|---|---|
WSL2 访问 Windows 目录 | 在 WSL2 访问 Windows 磁盘 | cd /mnt/c/Users/你的用户名 |
Windows 访问 WSL2 目录 | 直接在资源管理器打开 WSL2 | \\wsl$\Ubuntu-22.04\home\你的WSL用户名 |
WSL2 在 Windows 资源管理器打开当前目录 | 让 WSL2 打开 Windows 文件管理器 | explorer.exe . |
Windows 终端快速访问 WSL2 | 在 PowerShell 里访问 WSL2 目录 | wsl + cd /mnt/c/... |
创建 Bash 别名 | WSL2 里快速访问 Windows 目录 | alias winhome="cd /mnt/c/Users/..." |
最推荐的方法
/mnt/c/
访问 Windows 目录explorer.exe .
在 Windows 资源管理器打开 WSL2 目录\\wsl$\Ubuntu-22.04\home\你的用户名
在 Windows 访问 WSL2这样,你就可以 无缝地在 Windows 和 WSL2 之间访问文件了!🚀
能将windows目录整个显示在vscode左边资源管理器中吗?和wsl2打开的项目文件一起,方便调用。
是的,你可以 在 VS Code 左侧资源管理器同时显示 Windows 目录和 WSL2 目录,这样就能方便地在 Windows 和 WSL2 之间操作文件。以下是最优的解决方案:
在 WSL2 终端中,进入你的项目目录,并运行:
bashcode .
这样 VS Code 会以 WSL 远程模式 打开该目录。
C:\Users\你的用户名\Documents
你还可以手动将 Windows 目录加入 VS Code 工作区:
File (文件)
→ Add Folder to Workspace (添加文件夹到工作区)
/mnt/c/Users/你的用户名/Documents
如果你不想用 VS Code GUI 手动添加 Windows 目录,你可以直接在 WSL2 终端挂载 Windows 目录,然后用 code .
打开。
📌 示例
bashln -s /mnt/c/Users/你的用户名/Documents ~/windows_docs code ~/windows_docs
这样,你可以直接在 WSL2 终端使用 code ~/windows_docs
打开 Windows 目录。
方法 | 适用场景 | 步骤 |
---|---|---|
方法 1:VS Code "Add Folder to Workspace" | 让 Windows 和 WSL2 目录都显示在 VS Code 资源管理器 | ① code . 打开 WSL2 项目 → ② VS Code 资源管理器 → ③ "Add Folder to Workspace" |
方法 2:在 WSL2 挂载 Windows 目录 | 直接在 WSL2 终端中访问 Windows 目录 | ① ln -s /mnt/c/Users/你的用户名/Documents ~/windows_docs → ② code ~/windows_docs |
✅ 推荐方案:** 方法 1** 更直观,适合 VS Code GUI 用户;方法 2 适合喜欢命令行操作的开发者。
这样,你就能 在 VS Code 左侧资源管理器同时管理 Windows 目录和 WSL2 目录,方便进行文件操作!🚀
每次添加windows下的目录文件夹,就导致wsl2远程连接断开,是因为wsl2和winows的文件夹不兼容吗?必须将所有文件移动到wsl2文件夹目录下吗
✅ 问题分析: 你的 WSL2 远程连接在 VS Code 添加 Windows 目录后断开,可能由以下原因导致:
WSL2 和 Windows 文件系统不兼容(磁盘挂载方式不同)
WSL2 访问 Windows 目录时 I/O 过载
/mnt/c/
下的 Windows 文件系统时性能较低,因为它需要 跨系统调用(Syscall Translation)。WSL2 的文件权限问题
先只打开 WSL2 目录
bashcd ~/Myprojects code .
让 VS Code 先以 WSL 远程模式 运行。
然后在 WSL2 终端手动挂载 Windows 目录
bashln -s /mnt/c/Users/你的用户名/Documents ~/windows_docs
这样,你可以用 ~/windows_docs
访问 Windows 目录,而不会导致 WSL2 远程连接断开。
然后在 VS Code 资源管理器中手动打开 ~/windows_docs
ln -s
)访问 Windows 目录,然后从 WSL2 端访问避免在 WSL2 和 Windows 之间混合工作区
正确打开 Windows 目录
powershellcode C:\Users\你的用户名\Documents
bashcode ~/Myprojects
如果你经常在 WSL2 访问 Windows 目录,可以:
bashwsl --update wsl --shutdown
bashexplorer.exe .
方法 | 是否推荐? | 原因 |
---|---|---|
在 WSL2 里直接访问 /mnt/c/ | ❌ 不推荐 | WSL2 访问 Windows 目录慢,可能导致 VS Code 断开 |
使用 ln -s /mnt/c/... 软链接 Windows 目录 | ✅ 推荐 | 让 VS Code 仍然在 WSL2 里运行,减少 WSL2 远程断开的风险 |
使用 Remote - WSL 打开 WSL2 目录,并手动打开 Windows 目录 | ✅ 推荐 | 确保 Windows 目录和 WSL2 目录不会混合在一起 |
直接 "Add Folder to Workspace" Windows 目录 | ❌ 不推荐 | 可能导致 WSL2 远程断开 |
bashcode ~/Myprojects
powershellcode C:\Users\你的用户名\Documents
ln -s
软链接 或者 手动分别打开 WSL2 和 Windows 目录这样,你可以 流畅地在 VS Code 里同时管理 Windows 目录和 WSL2 目录,而不会导致 WSL2 远程连接断开!🚀
A module that was compiled using NumPy 1.x cannot be run in
NumPy 2.2.3 as it may crash. To support both 1.x and 2.x
versions of NumPy, modules must be compiled with NumPy 2.0.
Some module may need to rebuild instead e.g. with 'pybind11>=2.12'.
If you are a user of the module, the easiest solution will be to
downgrade to 'numpy<2' or try to upgrade the affected module.
We expect that some modules will need time to support NumPy 2.
Traceback (most recent call last): File "/home/loskeylee/Myprojects/AI assistant/codes/1 createfiles.py", line 5, in <module>
import faiss
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/init.py", line 18, in <module>
from .loader import *
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/loader.py", line 65, in <module>
from .swigfaiss import *
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/swigfaiss.py", line 13, in <module>
from . import _swigfaiss
AttributeError: _ARRAY_API not found
Traceback (most recent call last):
File "/home/loskeylee/Myprojects/AI assistant/codes/1 createfiles.py", line 5, in <module>
import faiss
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/init.py", line 18, in <module>
from .loader import *
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/loader.py", line 65, in <module>
from .swigfaiss import *
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/faiss/swigfaiss.py", line 13, in <module>
from . import _swigfaiss
ImportError: numpy.core.multiarray failed to import
你的错误是由于 NumPy 2.x 和 Faiss 的兼容性问题导致的。当前安装的 Faiss 依赖 NumPy 1.x,但你安装的是 NumPy 2.2.3,导致 numpy.core.multiarray
无法导入。
最简单的解决方案是 降级 NumPy 到 1.x 版本:
bashpip install "numpy<2" --force-reinstall
或者,如果你使用 Conda:
bashconda install numpy=1.26
然后重启 Python 解释器,再次运行代码。
如果 Faiss 有新的版本支持 NumPy 2.x,可以尝试升级:
bashpip install --upgrade faiss-cpu
或者(如果你使用的是 GPU 版本):
bashpip install --upgrade faiss-gpu
然后重启 Python 解释器,测试 import faiss
是否仍然报错。
如果上述方法仍然不行,可以 完全清除 Faiss 和 NumPy,然后重新安装正确的版本:
bashpip uninstall -y faiss faiss-cpu faiss-gpu numpy pip install "numpy<2" pip install faiss-cpu
如果使用 Conda:
bashconda remove faiss numpy conda install numpy=1.26 faiss-cpu -c conda-forge
推荐的最简单修复方法:
bashpip install "numpy<2" --force-reinstall
然后 重启 Python 解释器,再次运行 import faiss
。
这样,你的 Faiss 就不会因为 NumPy 版本不兼容而崩溃!🚀
安装vllm时总是卡在Collecting nvidia-ml-py (from vllm==0.4.2)
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/d8/a8/ec37169be4e2b7063b9076ed3fe0661e87335fbca665eed3f48c415cb234/nvidia_ml_py-12.570.86-py3-none-any.whl (44 kB)
Collecting vllm-nccl-cu12<2.19,>=2.18 (from vllm==0.4.2)
Using cached https://pypi.tuna.tsinghua.edu.cn/packages/41/07/c1be8f4ffdc257646dda26470b803487150c732aa5c9f532dd789f186a54/vllm_nccl_cu12-2.18.1.0.4.0.tar.gz (6.2 kB)
你的安装卡在:
Collecting vllm-nccl-cu12<2.19,>=2.18 (from vllm==0.4.2)
这通常是由于 网络问题、NCCl 依赖编译问题、或者 Conda/PyPi 依赖冲突 导致的。
pip
下载包后手动安装如果安装一直卡住,建议 手动下载依赖并安装:
bashpip download vllm==0.4.2 -d ~/vllm_install_files pip download nvidia-ml-py -d ~/vllm_install_files pip download vllm-nccl-cu12 -d ~/vllm_install_files
然后手动安装:
bashpip install ~/vllm_install_files/*.whl pip install ~/vllm_install_files/*.tar.gz
这样可以 避免 PyPi 下载超时的问题。
--no-cache-dir
重新安装如果安装卡住,可能是 缓存问题,可以尝试:
bashpip install vllm==0.4.2 --no-cache-dir
如果你已经在使用清华源,但下载依然很慢,可以 切换为阿里云源:
bashpip config set global.index-url https://mirrors.aliyun.com/pypi/simple pip install vllm==0.4.2
或者直接安装:
bashpip install vllm==0.4.2 -i https://mirrors.aliyun.com/pypi/simple
如果你的环境是 Conda,可以尝试用 Conda 安装:
bashconda install -c conda-forge vllm
这样可以避免 依赖编译问题。
如果问题出在 vllm-nccl-cu12
,可以手动安装:
bashpip install nvidia-nccl-cu12==2.18.1 pip install vllm==0.4.2
nvcc
和 CUDA 是否匹配vllm
需要 CUDA 12+,你可以检查你的 CUDA 版本:
bashnvcc --version
如果 CUDA 版本低于 12,你需要 更新 NVIDIA 驱动和 CUDA Toolkit,然后再尝试安装 vllm
。
方法 | 适用情况 | 命令 |
---|---|---|
手动下载包再安装 | 解决下载超时问题 | pip download ... → pip install ... |
使用 --no-cache-dir 重新安装 | 避免缓存问题 | pip install vllm==0.4.2 --no-cache-dir |
切换国内镜像 | 解决下载速度慢 | pip install -i https://mirrors.aliyun.com/pypi/simple |
Conda 安装 vLLM | 适用于 Conda 用户 | conda install -c conda-forge vllm |
手动安装 NCCL 依赖 | 解决 vllm-nccl-cu12 安装卡住 | pip install nvidia-nccl-cu12 |
检查 CUDA 版本 | 确保 vLLM 兼容 CUDA | nvcc --version |
🎯 推荐方案
pip install vllm --no-cache-dir
pip download
手动安装这样,你应该能顺利安装 vllm
了!🚀
自动激活conda
如果你希望 WSL2 终端或 Windows 终端打开时自动激活某个 Conda 环境,可以使用以下方法。
.bashrc
或 .zshrc
里自动激活环境适用于 WSL2 或 Linux 终端。
打开 .bashrc
或 .zshrc
bashnano ~/.bashrc
或者,如果你使用 Zsh:
bashnano ~/.zshrc
添加 Conda 初始化 确保以下内容存在:
bashsource ~/miniconda3/bin/activate conda activate ai_assistant_3.10p # 替换为你的环境名
保存文件
Ctrl + X
Y
确认Enter
退出使更改生效
bashsource ~/.bashrc
或者(如果使用 Zsh):
bashsource ~/.zshrc
测试
关闭 WSL2 终端,重新打开,看看 (ai_assistant_3.10p)
是否自动激活。
auto_activate_base
如果你想 默认激活 base
环境,可以使用:
bashconda config --set auto_activate_base true
如果你希望关闭 base
自动激活(但还是可以手动激活别的环境):
bashconda config --set auto_activate_base false
如果你使用 Windows Terminal / CMD / PowerShell,可以修改启动设置:
cmdconda activate ai_assistant_3.10p
cmd
里运行:
cmdecho conda activate ai_assistant_3.10p >> %USERPROFILE%\conda_auto.cmd
cmd%USERPROFILE%\conda_auto.cmd
powershellecho "conda activate ai_assistant_3.10p" >> $PROFILE
ai_assistant_3.10p
环境。方法 | 适用环境 | 命令 |
---|---|---|
WSL2 / Linux 终端自动激活环境 | WSL2 / Linux | 编辑 ~/.bashrc 或 ~/.zshrc 添加 conda activate |
默认自动激活 base | 任何终端 | conda config --set auto_activate_base true |
Windows CMD 自动激活 | Windows CMD | echo conda activate myenv >> %USERPROFILE%\conda_auto.cmd |
Windows PowerShell 自动激活 | PowerShell | echo "conda activate myenv" >> $PROFILE |
🎯 推荐方法
.bashrc
cmd
或 PowerShell
配置文件base
环境激活 → conda config --set auto_activate_base true
这样,每次打开终端时,你的 Conda 环境就会自动激活!🚀
开启时,自动激活conda的base
base
环境在终端打开时自动激活如果你希望 每次打开 WSL2 终端、Linux 终端、Windows CMD 或 PowerShell 时,自动激活 Conda base
环境,可以使用以下方法。
auto_activate_base
(推荐)bashconda config --set auto_activate_base true
说明:
base
环境,不需要手动 conda activate base
。验证是否生效:
bashconda info | grep auto_activate_base
如果输出:
auto_activate_base: True
说明 base
环境会在新终端打开时自动激活。
.bashrc
(适用于 WSL2 / Linux 终端)如果方法 1 不生效,你可以手动添加 conda activate base
到 .bashrc
:
bashnano ~/.bashrc
然后添加:
bashsource ~/miniconda3/bin/activate conda activate base
保存文件
Ctrl + X
→ Y
→ Enter
重新加载配置
bashsource ~/.bashrc
测试
关闭终端,重新打开,看看 (base)
是否自动激活。
base
如果你希望 每次打开 Windows CMD 时,自动进入 base
环境:
cmdecho conda activate base >> %USERPROFILE%\conda_auto.cmd
cmd%USERPROFILE%\conda_auto.cmd
base
。base
如果你希望 PowerShell 启动时自动进入 base
:
powershellecho "conda activate base" >> $PROFILE
base
环境。方法 | 适用环境 | 命令 |
---|---|---|
使用 Conda auto_activate_base (推荐) | WSL2 / Linux / Windows | conda config --set auto_activate_base true |
手动修改 .bashrc | WSL2 / Linux 终端 | 在 ~/.bashrc 添加 conda activate base |
CMD 自动激活 base | Windows CMD | echo conda activate base >> %USERPROFILE%\conda_auto.cmd |
PowerShell 自动激活 base | Windows PowerShell | echo "conda activate base" >> $PROFILE |
🎯 推荐方案
conda config --set auto_activate_base true
base
仍然不自动激活,手动修改 .bashrc
或 Windows 终端启动脚本。这样,每次打开终端时,你的 Conda base
环境就会自动激活!🚀
正在下载: Ubuntu
正在安装: Ubuntu
已存在具有所提供名称的分发。使用 --name 选择其他名称。
错误代码: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
已在此计算机上禁用 Sudo。若要启用它,请转到 Developer Settings page“设置”应用中的
已在此计算机上禁用 Sudo。若要启用它,请转到 Developer Settings page“设置”应用中的
fatal: destination path 'wsl-vpnkit' already exists and is not an empty directory.
PS C:\WINDOWS\system32\wsl-vpnkit>
你的错误提示表明 Ubuntu WSL 发行版和 wsl-vpnkit
目录已经存在,导致安装失败。下面是对应的解决方案。
错误信息
错误代码: Wsl/InstallDistro/Service/RegisterDistro/ERROR_ALREADY_EXISTS
原因
解决方案
查看已安装的 WSL 发行版 在 PowerShell 运行:
powershellwsl --list --verbose
你会看到类似:
textNAME STATE VERSION Ubuntu Running 2
如果 Ubuntu 已存在,但未运行 直接启动:
powershellwsl -d Ubuntu
如果你要重新安装 Ubuntu 先卸载原来的 Ubuntu:
powershellwsl --unregister Ubuntu
然后重新安装:
powershellwsl --install -d Ubuntu
wsl-vpnkit
目录已存在问题错误信息
fatal: destination path 'wsl-vpnkit' already exists and is not an empty directory.
原因
wsl-vpnkit
仓库,目录 wsl-vpnkit
存在且不是空的。解决方案
进入目录并拉取最新代码
powershellcd wsl-vpnkit git pull
如果你想重新安装 wsl-vpnkit
删除现有目录:
powershellrm -rf wsl-vpnkit
然后重新克隆:
powershellgit clone https://github.com/sakai135/wsl-vpnkit.git cd wsl-vpnkit
如果你只是想运行 wsl-vpnkit
直接进入目录并运行:
powershellcd wsl-vpnkit ./wsl-vpnkit start
问题 | 解决方案 |
---|---|
WSL Ubuntu 已存在,无法安装 | 运行 wsl --list --verbose 查看现有 WSL 发行版,使用 wsl -d Ubuntu 运行,或 wsl --unregister Ubuntu 重新安装 |
wsl-vpnkit 目录已存在 | 运行 git pull 更新代码,或 rm -rf wsl-vpnkit 删除后重新克隆 |
🎯 推荐做法
wsl -d Ubuntu
进入 WSLwsl-vpnkit
目录存在但需要更新,使用 git pull
wsl-vpnkit
,先 unregister
或 rm -rf
旧目录这样,你可以顺利地在 WSL2 运行 Ubuntu,并成功安装 wsl-vpnkit
!🚀
(base) loskeylee@LoskeyPC:~$ ./wsl-vpnkit start
-bash: ./wsl-vpnkit: Permission denied
你的错误 Permission denied
说明 wsl-vpnkit
没有执行权限。你可以使用以下方法解决:
wsl-vpnkit
可执行权限在 WSL2 终端运行:
bashchmod +x ~/wsl-vpnkit/wsl-vpnkit
然后再尝试运行:
bash./wsl-vpnkit start
bash
运行如果 chmod +x
仍然不行,你可以用 bash
执行:
bashbash ./wsl-vpnkit start
wsl-vpnkit
目录是否正确有时候你可能在错误的目录下执行,检查 wsl-vpnkit
是否正确存在:
bashls -l ~/wsl-vpnkit
如果 wsl-vpnkit
目录不存在,重新克隆:
bashgit clone https://github.com/sakai135/wsl-vpnkit.git cd wsl-vpnkit chmod +x wsl-vpnkit
如果仍然 Permission denied
,你可以 使用 sudo
运行:
bashsudo ./wsl-vpnkit start
如果 sudo
被禁用,你可能需要在 Windows “开发者设置”中重新启用。
方法 | 命令 | 适用情况 |
---|---|---|
赋予执行权限 | chmod +x ./wsl-vpnkit | Permission denied |
使用 bash 运行 | bash ./wsl-vpnkit start | Permission denied 仍然存在 |
检查文件是否存在 | ls -l ~/wsl-vpnkit | No such file or directory |
使用 sudo 运行 | sudo ./wsl-vpnkit start | 需要 root 权限 |
🎯 推荐做法
chmod +x ./wsl-vpnkit
赋予权限bash ./wsl-vpnkit start
ls -l ~/wsl-vpnkit
目录是否正确sudo ./wsl-vpnkit start
这样,你应该能够成功运行 wsl-vpnkit
🚀
(ai_3.10p) (base) loskeylee@LoskeyPC:~/Myprojects/AI assistant$ /home/loskeylee/miniconda3/envs/ai_3.10p/bin/python "/home/loskeylee/Myprojects/AI assistant/codes/3 model_test_glm-4-9b-chat.py"
Special tokens have been added in the vocabulary, make sure the associated word embeddings are fine-tuned or trained.
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:411: FutureWarning: torch.cuda.amp.custom_fwd(args...)
is deprecated. Please use torch.amp.custom_fwd(args..., device_type='cuda')
instead.
def forward(ctx, input, qweight, scales, qzeros, g_idx, bits, maxq):
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:419: FutureWarning: torch.cuda.amp.custom_bwd(args...)
is deprecated. Please use torch.amp.custom_bwd(args..., device_type='cuda')
instead.
def backward(ctx, grad_output):
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:461: FutureWarning: torch.cuda.amp.custom_fwd(args...)
is deprecated. Please use torch.amp.custom_fwd(args..., device_type='cuda')
instead.
@custom_fwd(cast_inputs=torch.float16)
Traceback (most recent call last):
File "/home/loskeylee/Myprojects/AI assistant/codes/3 model_test_glm-4-9b-chat.py", line 15, in <module>
model = AutoModelForCausalLM.from_pretrained(
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 558, in from_pretrained
return model_class.from_pretrained(
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/modeling_utils.py", line 3160, in from_pretrained
hf_quantizer = AutoHfQuantizer.from_config(config.quantization_config, pre_quantized=pre_quantized)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/quantizers/auto.py", line 124, in from_config
return target_cls(quantization_config, **kwargs)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/quantizers/quantizer_gptq.py", line 47, in init
from optimum.gptq import GPTQQuantizer
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/optimum/gptq/init.py", line 15, in <module>
from .quantizer import GPTQQuantizer, load_quantized_model
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/optimum/gptq/quantizer.py", line 53, in <module>
from auto_gptq import version as autogptq_version
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/init.py", line 3, in <module>
from .utils.peft_utils import get_gptq_peft_model
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/utils/peft_utils.py", line 6, in <module>
from peft import PeftConfig, PeftModel, PeftType, get_peft_model
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/init.py", line 22, in <module>
from .auto import (
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/auto.py", line 32, in <module>
from .mapping import MODEL_TYPE_TO_PEFT_MODEL_MAPPING
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/mapping.py", line 25, in <module>
from .mixed_model import PeftMixedModel
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/mixed_model.py", line 29, in <module>
from .peft_model import PeftModel
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/peft_model.py", line 37, in <module>
from transformers import Cache, DynamicCache, EncoderDecoderCache, PreTrainedModel
ImportError: cannot import name 'EncoderDecoderCache' from 'transformers' (/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/init.py)
你的错误:
ImportError: cannot import name 'EncoderDecoderCache' from 'transformers'
说明 peft
依赖的 transformers
版本与当前安装的版本不兼容。
transformers
和 peft
当前 peft
可能要求更高版本的 transformers
,可以尝试:
bashpip install --upgrade transformers peft
然后重新运行你的代码:
bashpython "/home/loskeylee/Myprojects/AI assistant/codes/3 model_test_glm-4-9b-chat.py"
如果 peft
需要更低版本的 transformers
,你可以回退到兼容版本,例如:
bashpip install "transformers<4.36" # 根据 peft 版本调整
然后再测试运行。
peft
和 transformers
如果仍然报错,可以卸载并重新安装:
bashpip uninstall -y transformers peft pip install transformers peft
transformers
版本你可以运行以下命令查看当前 transformers
版本:
bashpython -c "import transformers; print(transformers.__version__)"
然后查看 peft
兼容的 transformers
版本:
bashpip show peft | grep Requires
如果 peft
需要 更高或更低版本的 transformers
,你可以安装指定版本。
例如,如果 peft
需要 transformers>=4.35
,你可以运行:
bashpip install "transformers>=4.35"
方案 | 命令 | 适用情况 |
---|---|---|
升级 transformers 和 peft | pip install --upgrade transformers peft | 适用于 transformers 版本过低 |
回退 transformers 版本 | pip install "transformers<4.36" | 适用于 peft 依赖更低版本的 transformers |
强制重新安装 | pip uninstall -y transformers peft && pip install transformers peft | 适用于依赖冲突 |
检查 transformers 版本 | python -c "import transformers; print(transformers.__version__)” | 确认 peft 兼容的 transformers 版本 |
🎯 推荐做法
pip install --upgrade transformers peft
transformers
版本transformers
版本过高,回退 pip install "transformers<4.36"
这样,你应该可以顺利解决 ImportError: cannot import name 'EncoderDecoderCache'
的问题!🚀
(ai_3.10p) (base) loskeylee@LoskeyPC:~/Myprojects/AI assistant$ /home/loskeylee/miniconda3/envs/ai_3.10p/bin/python "/home/loskeylee/Myprojects/AI assistant/codes/3 model_test_glm-4-9b-chat.py"
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:411: FutureWarning: torch.cuda.amp.custom_fwd(args...)
is deprecated. Please use torch.amp.custom_fwd(args..., device_type='cuda')
instead.
def forward(ctx, input, qweight, scales, qzeros, g_idx, bits, maxq):
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:419: FutureWarning: torch.cuda.amp.custom_bwd(args...)
is deprecated. Please use torch.amp.custom_bwd(args..., device_type='cuda')
instead.
def backward(ctx, grad_output):
/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/auto_gptq/nn_modules/triton_utils/kernels.py:461: FutureWarning: torch.cuda.amp.custom_fwd(args...)
is deprecated. Please use torch.amp.custom_fwd(args..., device_type='cuda')
instead.
@custom_fwd(cast_inputs=torch.float16)
CUDA extension not installed.
CUDA extension not installed.
Traceback (most recent call last):
File "/home/loskeylee/Myprojects/AI assistant/codes/3 model_test_glm-4-9b-chat.py", line 15, in <module>
model = AutoModelForCausalLM.from_pretrained(
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/models/auto/auto_factory.py", line 559, in from_pretrained
return model_class.from_pretrained(
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/modeling_utils.py", line 4110, in from_pretrained
hf_quantizer.preprocess_model(
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/quantizers/base.py", line 194, in preprocess_model
return self._process_model_before_weight_loading(model, **kwargs)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/quantizers/quantizer_gptq.py", line 76, in _process_model_before_weight_loading
model = self.optimum_quantizer.convert_model(model)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/optimum/gptq/quantizer.py", line 293, in convert_model
self.block_name_to_quantize = get_block_name_with_pattern(model)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/optimum/gptq/utils.py", line 77, in get_block_name_with_pattern
raise ValueError("Block pattern could not be match. Pass block_name_to_quantize
argument in quantize_model
")
ValueError: Block pattern could not be match. Pass block_name_to_quantize
argument in quantize_model
你的新错误:
ValueError: Block pattern could not be match. Pass `block_name_to_quantize` argument in `quantize_model`
说明你使用的模型结构与 GPTQ 量化默认的 block_name_to_quantize
模式不匹配。这是由于你当前模型的结构可能和默认的GPTQ模式不同(例如GLM系列模型和GPT模型结构有差异)。
block_name_to_quantize
(推荐)在调用量化模型的代码中,手动指定要量化的模块名称(以ChatGLM模型为例):
pythonmodel = AutoModelForCausalLM.from_pretrained( "THUDM/chatglm3-6b", device_map="auto", quantization_config=GPTQConfig( bits=4, dataset="c4", block_name_to_quantize="transformer.encoder.layers" # ← 这里指定为适合GLM系列模型的模块名 ) )
GLM模型常用的结构名通常为:
transformer.encoder.layers
transformer.layers
你可以使用以下代码检查模型结构:
pythonfrom transformers import AutoModelForCausalLM model = AutoModelForCausalLM.from_pretrained("THUDM/chatglm3-6b", device_map="auto") for name, _ in model.named_modules(): print(name)
观察输出的模块名,找到类似 transformer.encoder.layers
或 transformer.layers
的模块名,然后再按照方法1指定。
你当前有提示:
CUDA extension not installed.
推荐重新安装 auto-gptq
,使用CUDA扩展:
bashpip uninstall -y auto-gptq pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/
这里假设你使用CUDA 11.8版本。如果使用CUDA 12,请相应更换链接:
bashpip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu121/
首先,确保CUDA扩展安装成功:
bashpip uninstall -y auto-gptq pip install auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/
然后,明确指定模型量化结构(GLM模型推荐):
pythonquantization_config=GPTQConfig( bits=4, dataset="c4", block_name_to_quantize="transformer.encoder.layers" )
这样应该能解决你的问题 🎉🚀
(ai_3.10p) (base) loskeylee@LoskeyPC:~/Myprojects/AI assistant$ /home/loskeylee/miniconda3/envs/ai_3.10p/bin/python "/home/loskeylee/Myprojects/AI assistant/codes/2 assistant_chatglm6b.py"
Traceback (most recent call last):
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1510, in _get_module
return importlib.import_module("." + module_name, self.name)
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/trainer.py", line 209, in <module>
from peft import PeftModel
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/init.py", line 22, in <module>
from .auto import (
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/auto.py", line 32, in <module>
from .mapping import MODEL_TYPE_TO_PEFT_MODEL_MAPPING
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/mapping.py", line 25, in <module>
from .mixed_model import PeftMixedModel
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/mixed_model.py", line 29, in <module>
from .peft_model import PeftModel
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/peft/peft_model.py", line 37, in <module>
from transformers import Cache, DynamicCache, EncoderDecoderCache, PreTrainedModel
ImportError: cannot import name 'EncoderDecoderCache' from 'transformers' (/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/init.py)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/loskeylee/Myprojects/AI assistant/codes/2 assistant_chatglm6b.py", line 4, in <module>
from sentence_transformers import SentenceTransformer
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/sentence_transformers/init.py", line 22, in <module>
from sentence_transformers.trainer import SentenceTransformerTrainer
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/sentence_transformers/trainer.py", line 14, in <module>
from transformers import EvalPrediction, PreTrainedTokenizerBase, Trainer, TrainerCallback
File "<frozen importlib._bootstrap>", line 1075, in _handle_fromlist
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1500, in getattr
module = self._get_module(self._class_to_module[name])
File "/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/utils/import_utils.py", line 1512, in _get_module
raise RuntimeError(
RuntimeError: Failed to import transformers.trainer because of the following error (look up to see its traceback):
cannot import name 'EncoderDecoderCache' from 'transformers' (/home/loskeylee/miniconda3/envs/ai_3.10p/lib/python3.10/site-packages/transformers/init.py)
你遇到的问题依然是:
cannot import name 'EncoderDecoderCache' from 'transformers'
这是因为你的peft
版本与当前的transformers
版本不兼容,尤其是在较新版本的peft
库会调用transformers
中最新才出现的类(如EncoderDecoderCache
)。
直接升级transformers
与peft
至最新版本:
bashpip install --upgrade transformers peft sentence_transformers
再运行代码:
bashpython "/home/loskeylee/Myprojects/AI assistant/codes/2 assistant_chatglm6b.py"
如果上述方法不生效,稳定兼容的组合是:
bashpip uninstall -y transformers peft pip install transformers==4.37.2 peft==0.10.0 sentence_transformers
再运行:
bashpython "/home/loskeylee/Myprojects/AI assistant/codes/2 assistant_chatglm6b.py"
检查当前安装版本:
bashpip show transformers peft sentence_transformers
bashpip uninstall -y transformers peft sentence_transformers pip install transformers==4.37.2 peft==0.10.0 sentence_transformers
然后重新运行你的代码即可快速解决。
这样做后,你遇到的EncoderDecoderCache
导入问题将得到彻底解决!🚀
安装linus和conda后,C盘爆满,哪些文件可以进行清理,不影响正常使用?如何将linux系统文件移动至其余的盘符?
当你在 Windows 上安装了 WSL2(Linux) 和 Conda 后,C 盘爆满通常是由于以下原因:
.vhdx
文件)Conda 会缓存已下载的包以及未使用的环境,可以通过以下命令释放空间:
bashconda clean --all
这将清理:
列出 Conda 环境:
bashconda env list
删除不需要的环境:
bashconda remove --name <环境名> --all
WSL2 使用 .vhdx
文件存储 Linux 文件系统,这个文件在删除内容后不会自动收缩。
.vhdx
文件:找到 WSL2 的 .vhdx
文件:
默认路径:
C:\Users\<你的用户名>\AppData\Local\Packages\<WSL发行版名称>\LocalState\ext4.vhdx
关闭 WSL2:
powershellwsl --shutdown
使用 diskpart
压缩 .vhdx
:
powershelldiskpart
textselect vdisk file="C:\路径\到\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit
重新启动 WSL2:
powershellwsl
你可以将 整个 WSL2 分发版(包括 Linux 系统文件)移动到其他盘符:
导出 WSL2 发行版:
powershellwsl --export Ubuntu D:\wsl-backup\ubuntu.tar
Ubuntu
为你的发行版名称(可以通过 wsl --list
查看)D:\wsl-backup\ubuntu.tar
是导出文件的位置注销原有的 WSL2 发行版:
powershellwsl --unregister Ubuntu
导入 WSL2 发行版到其他盘符(例如 D 盘):
powershellwsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tar
D:\WSL\Ubuntu
是新存储路径启动新的 WSL2 发行版:
powershellwsl -d Ubuntu
Conda 的默认环境和包存储在 C:\Users\<你的用户名>\Anaconda3
或 Miniconda3
下。可以将它移动到其他盘符:
卸载现有的 Conda(可选): 先备份重要环境:
bashconda env export > environment.yml
然后卸载 Conda。
重新安装 Conda 到其他盘符(如 D 盘):
在安装时选择 D:\Anaconda3
或 D:\Miniconda3
。
恢复环境:
bashconda env create -f environment.yml
在 WSL2 中运行:
bashsudo apt-get clean sudo apt-get autoremove
bashsudo journalctl --vacuum-time=7d
步骤 | 操作 |
---|---|
清理 Conda | conda clean --all + 删除不需要的环境 |
压缩 WSL2 虚拟硬盘 | diskpart + compact vdisk |
将 WSL2 移动到其他盘符 | wsl --export → wsl --unregister → wsl --import |
将 Conda 移动到其他盘符 | 重新安装 Conda 到其他盘符并恢复环境 |
清理 Linux 日志和缓存 | sudo apt-get clean + sudo journalctl --vacuum-time=7d |
和transformers==4.40.0匹配的pref版本
search("和transformers==4.40.0匹配的pref版本")
根据 Hugging Face 的 PEFT 库发布说明,PEFT 版本 0.13.1 及以上需要 transformers
版本高于 4.38.2。 GitHub因此,transformers
4.40.0 版本适配的 PEFT 版本应为 0.13.1 或更高。
请注意,PEFT 和 transformers
的版本更新较快,建议您在使用前查阅最新的发布说明和文档,以确保版本兼容性。
PS C:\WINDOWS\system32> wsl --export Ubuntu D:\wsl-backup\ubuntu.tar
系统找不到指定的路径。
错误代码: Wsl/ERROR_PATH_NOT_FOUND
PS C:\WINDOWS\system32> wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tar
系统找不到指定的路径。
错误代码: Wsl/ERROR_PATH_NOT_FOUND
PS C:\WINDOWS\system32>
错误信息:
text系统找不到指定的路径。 错误代码: Wsl/ERROR_PATH_NOT_FOUND
这是由于 目标路径 D:\wsl-backup\
或 D:\WSL\Ubuntu
不存在。WSL 不会自动创建目录,你需要 手动创建这些目录。
powershellmkdir D:\wsl-backup mkdir D:\WSL\Ubuntu
powershelldir D:\wsl-backup dir D:\WSL\Ubuntu
在目录创建后,重新运行导出命令:
powershellwsl --export Ubuntu D:\wsl-backup\ubuntu.tar
Ubuntu
是你的 WSL2 发行版名称(可以通过 wsl --list
查看)。D:\wsl-backup\ubuntu.tar
是导出文件的存储位置。在导出成功后,重新运行导入命令:
powershellwsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tar
D:\WSL\Ubuntu
是新存储路径。导入后,可以通过以下命令启动新位置的 WSL2 发行版:
powershellwsl -d Ubuntu
检查是否成功导入并运行:
powershellwsl --list --verbose
你应该会看到类似:
textNAME STATE VERSION Ubuntu Running 2
步骤 | 命令 |
---|---|
创建目标目录 | mkdir D:\wsl-backup 和 mkdir D:\WSL\Ubuntu |
重新导出发行版 | wsl --export Ubuntu D:\wsl-backup\ubuntu.tar |
重新导入到新位置 | wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tar |
验证并启动 | wsl --list --verbose 和 wsl -d Ubuntu |
wsl --export
和 wsl --import
命令wsl -d Ubuntu
启动并验证这样,你可以顺利地 将 WSL2 从 C 盘迁移到 D 盘,释放 C 盘空间!🚀
DiskPart 遇到错误: 另一个程序正在使用此文件,进程无法访问。
有关详细信息,请参阅系统事件日志。
DiskPart
报错:
DiskPart 遇到错误: 另一个程序正在使用此文件,进程无法访问。
这是因为 WSL2 正在运行,导致 .vhdx
文件 被占用,无法被 diskpart
压缩或修改。
在 PowerShell(管理员权限) 运行:
powershellwsl --shutdown
然后再尝试执行 diskpart
压缩。
即使 wsl --shutdown
,某些进程仍可能占用 .vhdx
文件。你可以:
taskkill
终止相关进程在 PowerShell(管理员权限) 运行:
powershelltaskkill /F /IM wsl.exe taskkill /F /IM VmmemWSL.exe taskkill /F /IM vmwp.exe taskkill /F /IM lxssmanager.exe
然后再尝试 diskpart
。
diskpart
有些情况下,进程无法完全释放,最简单的方法是:
diskpart
压缩命令ext4.vhdx
是否被占用你可以使用以下命令查看 .vhdx
是否仍然被占用:
powershellGet-Process | Select-String "vhdx"
如果仍然被占用,可以使用:
powershellhandle C:\路径\到\ext4.vhdx
然后手动关闭占用的进程。
diskpart
压缩在 PowerShell(管理员权限) 运行:
powershelldiskpart
然后依次输入:
textselect vdisk file="C:\Users\你的用户名\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_*\LocalState\ext4.vhdx" attach vdisk readonly compact vdisk detach vdisk exit
注意: 你需要把 C:\Users\你的用户名\...
替换成你的 .vhdx
文件路径(可以在 wsl --list --verbose
找到)。
步骤 | 命令 |
---|---|
关闭 WSL2 | wsl --shutdown |
强制终止占用进程 | taskkill /F /IM wsl.exe + taskkill /F /IM VmmemWSL.exe |
重启后立即执行 diskpart | diskpart |
检查 vhdx 是否被占用 | `Get-Process |
执行 diskpart 压缩 | compact vdisk |
🎯 推荐方案
wsl --shutdown
taskkill /F /IM wsl.exe
diskpart
这样,你就能成功释放 WSL2 .vhdx
的空间了!🚀
loskeylee@LoskeyPC:~
你在 WSL 的 Linux Shell 里尝试运行 wsl --unregister Ubuntu
,但该命令是 Windows 端 的 WSL 命令行工具,不在 Linux Shell 中可用。因此系统提示 wsl: command not found
。
wsl --unregister
命令?退出 WSL2 终端(也就是退出 Linux Shell)
bashexit
在 Windows PowerShell(或 CMD)中重新打开终端
Win + X
→ 选择 Windows PowerShell(管理员) 或 Windows Terminal(管理员)powershellwsl --unregister Ubuntu
这样 wsl --unregister
才会被识别并执行。
wsl.exe
是 Windows 里的可执行程序,位于 C:\Windows\System32\wsl.exe
,因此只能在 Windows 环境(PowerShell、CMD、Windows Terminal) 中执行。alias
配置。powershellwsl --unregister Ubuntu
这样就能成功注销(unregister)你的 WSL 发行版。
仔细说明 更改 Conda 环境的默认安装路径后面实施步骤
下面给你一个详细的步骤说明,讲解 如何将 Conda 环境或安装目录 从默认的 C 盘 移动到其他磁盘(D、E 等),并保证后续的环境安装都放到新目录下。
Miniconda3
或 Anaconda3
)从默认的 C:\Users\用户名\Miniconda3
移动到 D 盘或 E 盘,可以 卸载后重新安装,或者 直接手动移动文件并修正路径(更麻烦)。C:\Users\用户名\.conda\envs
(或 ~/miniconda3/envs
)下创建环境。可以通过修改 .condarc
(Conda 配置文件)或使用 conda create --prefix
明确指定要放到哪个目录。这两件事可以分开进行:
.condarc
即可.condarc
(推荐)查找/创建 .condarc
文件
.condarc
通常位于:
C:\Users\<你的用户名>\.condarc
.condarc
文件。打开 .condarc
,添加/修改以下配置:
yamlenvs_dirs: - D:\CondaEnvs - C:\Users\<你的用户名>\.conda\envs pkgs_dirs: - D:\CondaPkgs
envs_dirs
指定 Conda 环境 存放目录;你可以把第一条改成你想要放环境的路径(如 D:\CondaEnvs
)。pkgs_dirs
指定 Conda 包缓存 存放目录,也可以放到其他盘(如 D:\CondaPkgs
),防止缓存占用 C 盘。使配置生效
.condarc
文件后,下一次创建环境时,Conda 就会在 D:\CondaEnvs
中建环境;下载的包会缓存在 D:\CondaPkgs
。powershellconda env list
新建环境后会显示在 D:\CondaEnvs\...
conda create --prefix
(临时指定路径)如果你不想修改全局配置,而仅想把某个环境放到其他盘符,可用:
bashconda create --prefix D:\my_envs\myenv python=3.9 conda activate D:\my_envs\myenv
这样只针对当前环境,不会影响其他环境默认目录。
如果你还想把 Conda本身(比如 Miniconda3)从 C 盘移到 D 盘,这里有 两种做法。
备份 Conda 环境(如果不想丢失环境)
bashconda env export -n myenv > myenv.yml
重复对每个环境执行,或者只备份你需要的环境。
卸载 Conda
conda install anaconda-clean
,然后 anaconda-clean --yes
)。删除残留文件
C:\Users\<你的用户名>\Miniconda3
(或 Anaconda3
)C:\Users\<你的用户名>\.conda
(如已备份环境或不再需要)Miniconda3
有关的路径。在 D 盘重新安装
恢复环境(如有需要)
bashconda env create -f myenv.yml
conda install
所需包不太推荐,除非你无法卸载。大致步骤:
C:\Users\<你的用户名>\Miniconda3
到 D:\Miniconda3
D:\Miniconda3\Library\bin
、D:\Miniconda3\Scripts
等。D:\Miniconda3\condabin\conda.bat
,编辑检查是否指向正确目录etc/conda/activate.d
或 .bashrc
(WSL下)bashconda --version conda env list
如若出现莫名其妙的问题,还是建议卸载重装更干净。
无论你选择哪种方法,都建议:
conda clean --all
删除无用的环境
bashconda env list conda remove --name old_env --all
删除无用的包缓存(如果已设置新 pkgs_dirs
)
C:\Users\<用户名>\.conda\pkgs
是否可删除删除 Conda 快捷方式(如果卸载重新装)
.condarc
的 envs_dirs
& pkgs_dirs
。conda env export
/ conda env create
备份和恢复环境。conda clean --all
清理缓存,释放 C 盘空间。这样,你就能顺利地将 Conda 环境和安装位置移动到其他盘,并避免 C 盘爆满的问题了。
我的linux已经迁移至D盘,现在需要将linux当中部署的conda也迁移至d盘,请详细规划其步骤,将linux和conda在C盘的残留全部清理干净
以下是一份 详细 的 Conda 迁移与清理指南,假设你已经将 WSL2(Linux) 自身从 C 盘 迁移到 D 盘(比如通过 wsl --export
/ wsl --import
方式)。接下来,你想把 Linux 中安装的 Conda 一并“安家”在 D 盘,并且 彻底清理 C 盘中与 Conda/WSL2 相关的遗留文件。
.vhdx
已经成功存放在 D 盘
/home/xxx/miniconda3
)事实上已经随 WSL2 迁移到 D 盘的 .vhdx
文件里——从物理层面看,所有 Linux 内部文件现在都在 D 盘了。C:\Users\<Windows用户名>\Miniconda3
等).vhdx
、缓存文件、临时文件等pkgs
) 或环境存储在 Windows 本地目录/home/<user>/miniconda3
下已随迁移到 D 盘,那么仅需清理缓存即可。最终,你会得到一个 只存在 D 盘上的 WSL2 + Conda,并移除 C 盘的所有残留。
如果你通过下列命令完成迁移:
powershell# 导出 wsl --export Ubuntu D:\wsl-backup\ubuntu.tar # 注销 wsl --unregister Ubuntu # 导入 wsl --import Ubuntu D:\WSL\Ubuntu D:\wsl-backup\ubuntu.tar
那么现在,WSL2 的 ext4.vhdx 文件应该位于类似 D:\WSL\Ubuntu\ext4.vhdx
,里面包含所有 Linux 文件系统。你可以通过以下命令验证:
powershellwsl --list --verbose
如果看到 Ubuntu Running Version 2
,且它的安装路径指向 D 盘,说明迁移成功。
卸载 Windows 版 Conda
删除残留文件夹
textC:\Users\<你的Windows用户名>\Miniconda3 C:\Users\<你的Windows用户名>\Anaconda3 C:\ProgramData\Miniconda3
C:\Users\<你的Windows用户名>\.conda
、.anaconda
等文件夹,若确定不再需要可删除。清理 Windows 环境变量
Miniconda3
或 Anaconda3
的条目删除注册表残留(可选)
regedit
,搜索 Miniconda3
/ Anaconda3
,小心删除相关键值。这样可以彻底移除 Windows 原生 Conda。
如果你最初在 C 盘 AppData\Local\Packages\
下存在旧的 WSL 发行版文件,可以删除它:
powershell# 假设旧版本残留在 C:\Users\<你>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuOnWindows_xxxx\LocalState # 确认你已经 import 到 D 盘并 wsl --unregister 旧的 Ubuntu Remove-Item -Recurse -Force "C:\Users\<你>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuOnWindows_xxxx"
务必先确认你已做 wsl --unregister
并成功迁移,否则可能丢失数据。
现在 WSL2 .vhdx
位于 D 盘,物理上 Conda 也随之移动到了 D 盘内。
你可以在 WSL2 终端查看:
bashwhich conda conda --version
如果还可正常使用,就无需再做太多改变,你已经把 Linux + Conda 都放到 D 盘 了。
这会释放大量空间(包、tarball、索引缓存等)。bashconda clean --all
备份环境(如需要)
bashconda env list conda env export -n myenv > myenv.yml
删除旧的安装
bashrm -rf ~/miniconda3 rm -rf ~/.conda nano ~/.bashrc # 删除可能包含 “source ~/miniconda3/bin/activate” 的行
下载 Miniconda 安装包(Linux 版)
bashwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh bash miniconda.sh
~/miniconda3
(内部仍是 D 盘 .vhdx
里)source ~/.bashrc
或关闭重开 WSL2 终端恢复环境(如有需要)
bashconda env create -f myenv.yml
如果你希望 在 WSL2 内 将 Conda 环境和包缓存分别放到不同目录,可编辑 ~/.condarc
:
yamlenvs_dirs: - /home/loskeylee/conda_envs # 任意自定义位置 pkgs_dirs: - /home/loskeylee/conda_pkgs
这样,环境和包缓存就会在这些指定路径中存储(实际上也都在 D 盘的 .vhdx
)。
完成以上操作后,建议对照以下清单,检查 C 盘:
C:\Users\<你的Windows用户名>\Miniconda3
或 \Anaconda3
是否已删除C:\Users\<你的Windows用户名>\.conda
是否已删除C:\Users\<你的Windows用户名>\AppData\Local\Packages\Ubuntu\LocalState
是否已被删除(若旧版 WSL2 卸载)Miniconda3
或 Anaconda3
字样这样就能让 C 盘里和 Conda/WSL2 相关的文件彻底清空。
.vhdx
移至 D 盘 → 物理上,Linux 及其 Conda 安装内容都在 D 盘.conda
、.vhdx
、.anaconda
、Miniconda3
) → 保证无残留完成后,你的 Linux(WSL2)和 Conda 都会只存在 D 盘,并且 C 盘 中不再有任何无用文件占用空间。
如何完全卸载transformers还有其自带的peft等等组件
下面给你一份 彻底卸载 transformers
以及相关库(如 peft
) 的详细指南,确保环境里不再残留任何相关文件或依赖。
conda install transformers
或 conda install -c conda-forge transformers
等),需要通过 Conda 命令 移除。pip install transformers
),需要通过 Pip 命令 移除。有时你可能 同时使用 Conda 环境,但又在该环境内执行 pip install
,这时要结合两者一起操作。
激活目标环境(如果你在特定环境中安装的 transformers
和 peft
):
bashconda activate myenv
卸载相关包:
bashconda remove transformers peft --force
--force
可以确保即使有依赖也会强制删除。如果你想自动卸载依赖(如 tokenizers
, huggingface_hub
, accelerate
等),可使用:
bashconda remove --force transformers peft tokenizers huggingface_hub accelerate
或者使用:
bashconda remove --all transformers peft
但可能会移除一些别的依赖,需谨慎。
先确认你在正确的 Python/Conda 环境里
如果在 Conda 环境中,就激活该环境,然后再 pip 卸载:
bashconda activate myenv
如果是系统 Python,就在系统环境中执行。
卸载包:
bashpip uninstall -y transformers peft
-y
选项表示无需每次确认,直接卸载。查找其他可能相关的库:
bashpip freeze | grep -E "transformers|peft|huggingface-hub|tokenizers|accelerate|bitsandbytes|auto-gptq"
然后对照清单,把相关依赖一起卸载:
bashpip uninstall -y tokenizers huggingface-hub accelerate auto-gptq bitsandbytes
视你实际安装情况而定。
有时即使卸载了包,某些文件可能残留在 site-packages
里:
定位当前 Python 环境下的 site-packages
bashpython -m site
你会看到类似:
textENABLE_USER_SITE: True USER_SITE: /home/username/.local/lib/python3.10/site-packages SYS_PATH: /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages ...
找到你的 Conda 或 Pip 使用的 site-packages
路径。
查看 site-packages
下是否仍有 transformers
/ peft
文件夹
bashls /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages | grep transformers ls /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages | grep peft
如果还有残留文件夹,可以手动删除:
bashrm -rf /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages/transformers rm -rf /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages/peft
(谨慎操作,确保对应包已卸载)
检查 .egg-info
或 .dist-info
例如:
bashls /home/username/miniconda3/envs/myenv/lib/python3.10/site-packages | grep transformers
如果看到 transformers-4.xx.xx.dist-info
也可以一起删除。
bashconda clean --all
它会删除已下载包的 tarball、索引缓存等,释放空间。
Pip 默认缓存位于:
~/.cache/pip
C:\Users\<username>\AppData\Local\pip\Cache
可以直接删除:
bashrm -rf ~/.cache/pip
或在 Windows Explorer 中删除相关文件夹。
如果你想重新安装或验证,执行:
bashpip install transformers peft # or conda install transformers peft
然后测试:
bashpython -c "import transformers; import peft"
若能导入说明安装成功,反之说明已卸载彻底。
conda remove transformers peft ...
pip uninstall transformers peft ...
tokenizers
, huggingface-hub
, accelerate
, auto-gptq
等),根据需要卸载。site-packages
并 手动删除 残留 transformers/
, peft/
文件夹及 .dist-info
conda clean --all
、rm -rf ~/.cache/pip
pip freeze | grep transformers
或在 Python 中 import transformers
,若报 ModuleNotFoundError
,说明已彻底卸载。这样,你的系统/环境中将不再残留任何 transformers
或 peft
相关模块了。
如何在wsl2中创建新的环境
在 WSL2(Linux)中,可以使用 Conda 或 Python Virtualenv (venv
) 来创建新的虚拟环境。以下是 两种方法,建议 使用 Conda,因为它更方便管理包依赖。
在 WSL2 终端运行:
bashconda --version
如果未安装 Conda,可以手动安装 Miniconda(轻量版 Conda):
bashwget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh bash miniconda.sh
安装后重启 WSL2,然后运行:
bashsource ~/.bashrc
运行:
bashconda create --name myenv python=3.10
myenv
是环境名称,可自行更改。python=3.10
指定 Python 版本。bashconda activate myenv
激活后,终端前面会显示 (myenv)
,表示环境成功切换。
可以安装 pip
、transformers
、torch
等:
bashconda install pip pip install transformers torch
如果需要退出当前环境:
bashconda deactivate
bashconda env list
bashconda remove --name myenv --all
venv
)如果你不想安装 Conda,也可以使用 Python 自带的 venv
。
bashpython3 -m venv ~/myenv
这将在 ~/myenv
目录下创建一个虚拟环境。
bashsource ~/myenv/bin/activate
激活后,终端前面会显示 (myenv)
。
bashpip install transformers torch
bashdeactivate
bashrm -rf ~/myenv
方法 | 适用场景 | 命令 |
---|---|---|
Conda(推荐) | 需要管理多个环境,带有依赖管理 | conda create --name myenv python=3.10 |
Python venv | 轻量级,不想安装 Conda | python3 -m venv ~/myenv |
conda create
更方便。python3 -m venv
也是不错的选择。这样,你就能在 WSL2 中轻松创建、管理新的 Python 环境了!🚀
使用wsl-vpnkit,让wsl2也是用windows的vpn
wsl-vpnkit
让 WSL2 共享 Windows VPNWSL2 默认使用 Hyper-V 虚拟网络,这会导致:
wsl-vpnkit
允许 WSL2 通过 Windows 共享 VPN,让 WSL2 和 Windows 处于同一网络环境。wsl-vpnkit
并启用 Windows VPN 共享wsl-vpnkit
首先,在 WSL2 终端 执行以下命令:
bashgit clone https://github.com/sakai135/wsl-vpnkit.git cd wsl-vpnkit
wsl-vpnkit
运行权限bashchmod +x wsl-vpnkit
wsl-vpnkit
bash./wsl-vpnkit start
这会让 WSL2 通过 vpnkit.exe
连接到 Windows 网络,使 WSL2 也能使用 Windows 的 VPN。
wsl-vpnkit
(可选)如果希望 WSL2 每次启动时自动启用 wsl-vpnkit
,可以将其添加到 .bashrc
或 .zshrc
:
bashecho "~/wsl-vpnkit/wsl-vpnkit start" >> ~/.bashrc
然后运行:
bashsource ~/.bashrc
这样每次打开 WSL2,都会自动连接 Windows VPN。
在 WSL2 运行:
bashcurl ifconfig.me
然后在 Windows PowerShell 运行:
powershell(Invoke-WebRequest -Uri "https://ifconfig.me").Content
如果两个 IP 地址相同,说明 WSL2 正在使用 Windows 的 VPN。
ping
,检查 WSL2 是否可以访问 VPN 专用 IP
bashping 10.x.x.x
traceroute
(如果安装了)
bashtraceroute google.com
wsl-vpnkit
启动失败如果运行 ./wsl-vpnkit start
报错:
-bash: ./wsl-vpnkit: Permission denied
请检查是否缺少执行权限:
bashchmod +x ~/wsl-vpnkit/wsl-vpnkit
然后重新运行:
bash./wsl-vpnkit start
如果 curl ifconfig.me
显示的 IP 仍然与 Windows 不同:
bash./wsl-vpnkit stop ./wsl-vpnkit start
然后再检查 curl ifconfig.me
结果。
wsl-vpnkit
运行后 WSL2 无法上网可能是 Windows 防火墙阻止了 vpnkit.exe
:
Windows Defender 防火墙
,进入:
控制面板 -> 系统和安全 -> Windows Defender 防火墙 -> 允许的应用
vpnkit.exe
,确保 "专用" 和 "公用" 网络都已启用vpnkit.exe
,手动添加:
C:\Program Files\Docker\Docker\resources\vpnkit.exe
步骤 | 命令 |
---|---|
安装 wsl-vpnkit | git clone https://github.com/sakai135/wsl-vpnkit.git |
赋予执行权限 | chmod +x wsl-vpnkit |
启动 wsl-vpnkit | ./wsl-vpnkit start |
自动启动(可选) | echo "~/wsl-vpnkit/wsl-vpnkit start" >> ~/.bashrc |
检查是否生效 | curl ifconfig.me |
这样,你的 WSL2 就能通过 wsl-vpnkit
使用 Windows VPN 了!🚀