Conda 是一个开源的包管理和环境管理工具,广泛用于数据科学和机器学习领域。WSL(Windows Subsystem for Linux)则是 Windows 提供的一个兼容层,允许用户在 Windows 系统上运行 Linux 应用程序。将 Conda 与 WSL 结合使用,可以充分发挥两者的优点,打造一个强大且灵活的本地开发环境。
以下是如何结合 Conda 和 WSL 来创建高效开发环境的详细指南。
首先需要确保你的系统已安装并配置好 WSL。以下是安装步骤:
打开 PowerShell 或命令提示符(以管理员身份运行),执行以下命令以启用 WSL:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
同样在 PowerShell 中运行以下命令以启用虚拟机平台(某些发行版需要此功能):
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
检查当前支持的 WSL 版本,并将其设置为 WSL 2(推荐):
wsl --set-default-version 2
从 Microsoft Store 下载并安装一个 Linux 发行版,例如 Ubuntu。安装完成后启动它,并按照提示设置用户名和密码。
接下来,我们需要在 WSL 的 Linux 环境中安装 Conda。
打开 WSL 终端,运行以下命令以更新系统包:
sudo apt update && sudo apt upgrade -y
Miniconda 是 Conda 的轻量级版本,适合大多数开发者需求。运行以下命令下载安装脚本:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
执行安装脚本,并根据提示完成安装:
bash Miniconda3-latest-Linux-x86_64.sh
在安装过程中,会要求你阅读许可协议、选择安装路径以及是否初始化 Conda。建议选择 yes
初始化 Conda。
安装完成后,重启 WSL 终端或运行以下命令以激活 Conda:
source ~/.bashrc
验证安装是否成功:
conda --version
现在我们可以开始配置开发环境了。
创建一个新的 Conda 环境,例如名为 myenv
的 Python 3.9 环境:
conda create --name myenv python=3.9
激活环境:
conda activate myenv
根据项目需求安装所需的包。例如,安装 NumPy 和 Pandas:
conda install numpy pandas
如果你需要在浏览器中运行 Jupyter Notebook,可以通过以下命令安装:
conda install jupyter
启动 Jupyter Notebook 并绑定到所有网络接口:
jupyter notebook --ip=0.0.0.0
此时可以从 Windows 浏览器访问 Jupyter Notebook。
WSL 和 Windows 的文件系统是互通的,你可以通过以下路径访问 Windows 文件:
/mnt/c/
表示 Windows 的 C:
盘。/mnt/d/
表示 Windows 的 D:
盘。例如,假设你的项目位于 C:\Users\YourName\Projects
,可以在 WSL 中通过以下路径访问:
cd /mnt/c/Users/YourName/Projects
WSL 2 使用虚拟化技术,因此性能可能受到磁盘 I/O 的影响。为了提高性能,可以考虑以下优化措施:
尽量将项目文件存储在 WSL 的根文件系统中(如 /home/username/projects
),而不是 /mnt/c/
路径下。这样可以避免跨文件系统的性能损耗。
编辑 WSL 配置文件 /etc/wsl.conf
,添加以下内容以优化内存分配:
[wsl2]
memory=4GB # 分配 4GB 内存
processors=2 # 使用 2 个 CPU 核心
以下是结合 Conda 和 WSL 的典型开发工作流程:
原因:可能是 WSL 功能未正确启用。
解决方法:重新运行 dism.exe
命令以启用 WSL 功能。
原因:可能是 .bashrc
文件被修改。
解决方法:手动添加以下内容到 .bashrc
文件:
export PATH="/home/username/miniconda3/bin:$PATH"
原因:可能是防火墙阻止了访问。 解决方法:确保端口未被占用,并在 Windows 防火墙中开放相关端口。