Files
My-Blog/content/windows-5-py.md
2025-07-13 20:30:53 +08:00

270 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

+++
title = "Windows系列(5):Python开发配置"
date = 2024-05-31
[taxonomies]
tags = ["Windows"]
+++
前言 由于 Windows 中开发环境较 linux 复杂,这里总结 Windows 中使用 Jupyter 开发 Python 的环境配置。
<!-- more -->
## 安装
Python是一种跨平台的编程语言,社区生态丰富,有许多现成的包可以调用。传统的安装方法如下:
- 下载、安装Pythond解释器
- 验证安装;
- 安装VScode以及Python的拓展
但Python开发项目时往往需要不同版本不同的第三方包如果用传统方法难以管理因此现在的主流方法是
- 安装Anaconda或miniconda等Python集成包
- 使用conda创建并启动一个Python环境
- 安装jupyter编辑器编写python。
在[Anaconda官网](https://www.anaconda.com/)下载并安装,安装成功后,命令行中敲``conda info``会显示conda的版本和python的版本等详细信息再敲``conda list``,会列出当前环境下所有安装的包。
安装好了Anaconda就相当于同时有了Python、环境管理器、包管理器以及一大堆开箱即用的科学计算工具包。
## 使用
安装好了默认是在base虚拟环境下此时我们从base环境复制一份出来在新环境里工作。
- 复制base环境, 创建test环境
```
conda create --name test --clone base
```
- 激活test环境
```
conda activate test
```
- 取消Conda默认激活base虚拟环境
```
conda config --set auto_activate_base false
```
- 列出本机的所有环境如下可见当前有2个环境当前激活的是test环境
```
(test) ➜ ~ conda info -e
- conda environments:
#
base /Volumes/300g/opt/anaconda3
test * /Volumes/300g/opt/anaconda3/envs/test
```
- Anaconda默认安装了jupyter打开jupyter
```
jupyter notebook
```
此时会自动弹出浏览器窗口打开Jupyter Notebook网页默认为``http://localhost:8888``
> Jupyter汉化/下载中文包:``pip install jupyterlab-language-pack-zh-CN``
### 虚拟环境管理
- 创建环境后面的python=3.6是指定python的版本
```
conda create --name env_name python=3.6
```
- 创建包含某些包的环境(也可以加上版本信息)
```
conda create --name env_name python=3.7 numpy scrapy
```
- 激活某个环境
```
conda activate env_name
```
- 关闭某个环境
```
conda deactivate
```
- 复制某个环境
```
conda create --name new_env_name --clone old_env_name
```
- 删除某个环境
```
conda remove --name env_name --all
```
- 生成需要分享环境的yml文件需要在虚拟环境中执行
```
conda env export > environment.yml
```
- 别人在自己本地使用yml文件创建虚拟环境
```
conda env create -f environment.yml
```
### 包管理
- 列出当前环境下所有安装的包
```
conda list
```
- 列举一个指定环境下的所有包
```
conda list -n env_name
```
- 查询库
```
conda search scrapys
```
- 安装库安装时可以指定版本例如scrapy=1.5.0
```
conda install scrapy
```
- 为指定环境安装某个包
```
conda install --name target_env_name package_name
```
- 更新安装的库
```
conda update scrapy
```
- 更新指定环境某个包
```
conda update -n target_env_name package_name
```
- 更新所有包
```
conda update --all
```
- 删除已经安装的库
```
conda remove scrapy
```
- 删除指定环境某个包
```
conda remove -n target_env_name package_name
```
- 更多命令请查看官方文档或者查询帮助命令:
```
conda --help
conda install --help
```
有了Conda包管理器为什么Anaconda环境中可能还需要用pip安装包呢因为Anaconda本身只提供部分包远没有pip提供的包多有时conda无法安装我们需要的包此时需要用pip将其装到conda环境里。
安装特定版本的包conda用=pip用==。例如:
```
conda install xxx=1.0.0
pip install xxx==1.0.0
```
## Jupyter使用
安装Anaconda并启动一个环境之后如何让Jupyter Notebook在我们要的环境中启动呢
- 激活目标环境
```
conda activate myenv
```
- 安装 ipykernel如尚未安装
为了让 Jupyter Notebook 能识别该环境中的 Python 解释器,你需要在该环境中安装 ipykernel
```
conda install ipykernel
# 或者使用 pip
pip install ipykernel
```
- 注册环境内核
将该环境注册为 Jupyter 的一个内核kernel这样启动 Jupyter Notebook 后就能选择这个内核:
```
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
# 这里 --name 指定内核的名称,--display-name 是在 Jupyter Notebook 界面中显示的名称,你可以根据需要自定义。
```
- 启动 Jupyter Notebook依然在激活后的环境中启动 Jupyter Notebook
```
jupyter notebook
```
- 启动后,你在新建 notebook 时可以选择刚刚注册的内核 “Python (myenv)” 来确保使用该环境的 Python 解释器。
> 当然,你也可以使用其他编辑器/IDE如 Sublime Text 或者 JetBrains 系列的 PyCharm 。
> linux中使用Miniconda
```
# Miniconda安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 执行以下命令启动安装程序:
bash Miniconda3-latest-Linux-x86_64.sh
# 验证安装
conda --version
```
## 使用UV替代Conda
> UV由 Astral 团队开发)是一个用 Rust 编写的高性能包管理器,提供了类似 Conda 的虚拟环境管理和依赖解析功能,并且在大多数场景下比 pip 和 Conda 快 10100 倍。它通过命令行工具如 uv venv创建/管理虚拟环境)和 uv pip安装/锁定/同步依赖)来覆盖传统的 conda create、conda install、conda env export 等操作,但本身并不管理底层的 C/C++ 库,因此对于诸如 GDAL、SciPy 等需要系统级二进制依赖的包,仍建议在 Conda/系统包管理器中预装相关库,然后用 UV 来管理 Python 包。
**安装与激活**
```
wget -qO- https://astral.sh/uv/install.sh | sh
```
- 在当前目录下创建 .venv使用系统默认 Python若不存在则自动下载
```
uv venv
```
- 指定环境名称或路径
```
uv venv myenv
```
- 指定 Python 版本(需系统已有或可下载)
```
uv venv --python 3.11
```
- 激活
```
source .venv/bin/activate
```
**安装包**
```bash
# 安装单个包
uv pip install requests
# 批量安装并自动锁定依赖
uv pip install fastapi uvicorn sqlalchemy
```
**生成与同步锁文件**
```bash
# 从 requirements.in 生成统一依赖文件
uv pip compile docs/requirements.in \
--universal \
--output-file docs/requirements.txt
# 根据锁文件同步环境
uv pip sync docs/requirements.txt
```
此流程替代 `conda env export` + `conda env update`,并保证跨平台一致性 ([GitHub][3])。
**查看与卸载**
```bash
uv pip list # 列出已安装包(类似 conda list
uv pip uninstall numpy
```
**替代常见 Conda 工作流**
| Conda 操作 | UV 对应 |
| -------------------------------- | ---------------------------------------- |
| `conda create -n env python=3.x` | `uv venv --python 3.x` |
| `conda activate env` | `source .venv/bin/activate` 或 `activate` |
| `conda install pkg1 pkg2` | `uv pip install pkg1 pkg2` |
| `conda env export > env.yml` | `uv pip compile requirements.in` |
| `conda env update -f env.yml` | `uv pip sync requirements.txt` |
| `conda list` | `uv pip list` |
**最佳实践**
1. **系统依赖**:用 Conda/Mamba 安装较难编译的 C 库(`conda install gdal`)。
2. **Python 包**:用 UV 管理所有纯 Python 依赖(`uv pip install pandas scikit-learn`)。
3. **统一锁定**:把 `uv pip compile` 生成的 `requirements.txt` 放入版本控制,确保团队环境一致。
---
**Done.**