Python环境配置
python最强工具uv
官网:
An extremely fast Python package and project manager, written in Rust.
A single tool to replace pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv, and more.
一个工具,替代pip pyenv conda/miniforge virtualenv 等,非常强大。发布uv的愿景,是希望构造类似Rust的cargo,快速、可依赖,易用的包管理工具。
通过在不同的系统进行几个常见包的测试,uv相比pip,加速比在1~13之间,因此是一个值得一试的工具。
即使是在venv环境中安装的,uv也会复制自己的可执行文件也会被复制到系统的PATH目录中,保证退出或切换虚拟环境后,uv命令依然能够正常使用。
uv安装:
bash
pip install uv
更换国内镜像源:
参考:https://blog.csdn.net/qq_41472205/article/details/145686414
最简单可以设置环境变量:UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
常用:
查看python版本清单:
bash
uv python list
uv 安装某个版本的python:
bash
uv python install cpython-3.13
以某个版本的python去运行py脚本:
bash
uv run -p 3.13 python.py
进入某个版本的python交互环境:
bash
uv run -p 3.13 python
如果进某个版本的环境,该版本不存在,则会自动下载该环境,如:
bash
uv run -p pypy python
会自动安装pypy。
uv初始化工程,进入工程文件夹,然后:
bash
uv init -p 3.13
就会在工程目录初始化一些工程文件,根据需要配置,如果不需要配置项目内工程文件则直接使用uv venv
。
添加依赖:
bash
uv add xxx(依赖名称)
uv add xxx(依赖名称) --dev
uv remove xxx(依赖名称)
uv remove xxx(依赖名称) --dev
不添加到工程,直接添加到工程以外:
bash
uv tool install xxx(工具包名称)
查看通过uv tool已经安装的工具:
bash
uv tool list
打包build,填写toml的project scripts,然后:
bash
uv build
打包后生成whl工具包。
查看工程依赖关系:
bash
uv tree
指定uv python的默认版本和国内源,设置环境变量:
export UV_PYTHON=3.11.11
export UV_DEFAULT_INDEX=https://mirrors.cloud.tencent.com/pypi/simple
export UV_INDEX_URL=https://mirrors.cloud.tencent.com/pypi/simple
export EXTRA_INDEX_URL=https://mirrors.cloud.tencent.com/pypi/simple
其他常用uv命令:
bash
# 创建虚拟环境,不加环境路径的话默认是保存在当前的.venv目录下
# 最推荐这个方式,简洁容易记!!!
uv venv
# 指定环境保存目录
uv venv /path/to/venv
# 指定Python版本,注意需要对应版本的Python已经安装
uv venv -p 3.12
# --python 同 -p
uv venv --python 3.12
# uv工具不会自动下载Python包,因此如果设置-p时指定系统不存在的Python版本会报错
uv venv -p 3.13
No Python 3.13 In `PATH`. Is Python 3.13 installed?
# Unix
source venv/bin/activate
# Windows
.venv\Scripts\activate
# 从 pypi上安装包,默认安装最新版本
uv pip install flask
# 从镜像网站上拉取安装包
uv pip install flask -i https://pypi.tuna.tsinghua.edu.cn/simple
# 更新包版本
uv pip install -U flask
# 安装特定版本的包:
uv pip install -U flask==3.0.0
# 从当前目录安装
uv pip install .
# 从当前目录安装,并且支持editable实时更新代码模式
uv pip install -e .
一个非常重要的点:uv 默认不会读pip.conf这种类型的镜像配置,因此在国内的话,包的默认下载速度是比较慢的,需要手动加--index-url/-i和-extra-index-url,才能达到比较快的下载速度。或者提前设置好国内源。
卸载包:
uv pip uninstall flask
注意:与pip不同,uv pip uninstall时默认不会让你再确认一遍。
uv有一个顶级命令uv cache,用于cache的管理。
首先类似pip cache dir ,uv也有一个cache dir命令来查看缓存目录:
$ uv cache dir
/home/gitpod/.cache/uv
可以彻底地删除cache,命令为uv cache clean,整个cache目录都会被清除掉:
$ uv cache clean
Clearing cache at: /home/gitpod/.cache/uv
Removed 78 files (16.7MiB)
目前来看,未来的一个大的方向是利用Rust来开发Python的工具链,帮助人们来更好地写Python代码。Python语言最大的优势是易用性和生态完善性,这个是目前Rust还没法替代Python的原因。未来Python的优势会继续保持下去,但包管理设计上工具太多,导致非常的混乱,借鉴Rust的经验来解决这个问题,是个好的方向。
笔记参考:https://zhuanlan.zhihu.com/p/689976933
miniforge替换miniconda
anaconda和miniconda是商业产品,使用miniforge3替换之。
miniforge项目:https://github.com/conda-forge/miniforge
下载:https://github.com/conda-forge/miniforge/releases/tag/24.9.2-0
或者官网下载。
选对对应的平台版本下载比如:Miniforge3-24.9.2-0-Linux-x86_64.sh
linux版本直接普通用户执行安装脚本按照提示照做即可;windows安装完需要配置Path环境:
conda/mamba使用示例
bash
查看conda、环境相关信息:
conda info
查看所有环境:
conda env list
conda info -e
conda info --envs
检查当前的频道配置:
conda config --show-sources
conda config --show channels
进入默认的base环境:
conda activate
进入具体某个环境:
conda activate xxx
退出默认或具体的环境:
conda deactivate (xxx)
如果conda activate默认不能使用,可以使用conda初始化:
conda init zsh
conda init --all
清除缓存:
conda clean --index-cache
更新conda本身:
conda update conda
使用示例:
conda create -n py310 python=3.10
conda activate py310
conda deactivate
移除环境 如果没有"--all",会出现移除不干净的情况:
conda remove -n "envName" --all
查看当前环境已安装的包列表:
conda list
设置清华源示例:
bash
# 设置 conda-forge 频道 (Miniforge 的核心)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# 可选:设置其他常用频道
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
conda config --remove channels defaults
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --system --remove channels conda-forge
conda config --set show_channel_urls yes
conda defaults chanel
首先,我们要明确几个概念:
- Conda: 是一个开源的包管理器和环境管理器。它最初由 Anaconda, Inc. (以前叫 Continuum Analytics) 开发。
- Anaconda Distribution: 是一个包含 Conda、Python 以及大量预装科学计算包(如 NumPy, SciPy, pandas, Jupyter 等)的发行版。这些预装包主要来自 Anaconda, Inc. 自己构建和维护的频道。
defaults
频道: 这是 Conda 查找包时的一个元频道 (meta-channel)。当你指定defaults
时,Conda 实际上会去 Anaconda, Inc. 维护的一系列频道(如main
,r
,msys2
等)中查找。所以,defaults
频道本质上就是指向 Anaconda, Inc. 官方维护的包集合。- Miniforge: 是一个由社区驱动的、最小化的 Conda 安装程序。它的主要特点是默认使用
conda-forge
作为主要的包频道,并且通常包含conda-forge
构建的 Python 解释器。 conda-forge
: 是一个社区维护的 Conda 包频道,拥有非常庞大和活跃的包集合。它独立于 Anaconda, Inc. 运营。
现在回到你的问题:“miniforge的defaults渠道为什么要设置为anaconda?”
严格来说,Miniforge 的设计目标是优先使用 conda-forge
频道,而不是 defaults
(Anaconda) 频道。当你安装 Miniforge 后,它的 .condarc
配置文件通常会将 conda-forge
设置为最高优先级的频道。
那么,为什么在 Conda 的配置中,defaults
这个名称本身会与 Anaconda 公司联系起来呢?
历史渊源和定义:
defaults
这个频道名称是 Conda 工具历史形成的。由于 Conda 最初由 Anaconda, Inc. 开发,他们自然地将自己维护的频道集合命名为defaults
,作为 Conda 安装后默认查找包的地方。- 所以,并不是 Miniforge 把
defaults
"设置" 成 Anaconda 的,而是defaults
这个标识符在 Conda 的世界里 就是 Anaconda 官方频道的代名词。
Conda 工具的内置行为:
- Conda 包管理器本身知道
defaults
这个元频道。Miniforge 安装的是 Conda 这个工具(通常是conda-forge
构建的版本),这个工具本身就包含了对defaults
频道的认知。 - Miniforge 做的是通过配置文件(
.condarc
)覆盖默认的频道优先级,将conda-forge
置于defaults
之上。但它并没有,也不能轻易地从 Conda 工具的内部逻辑中移除defaults
这个概念。
- Conda 包管理器本身知道
兼容性和用户选择:
- 尽管 Miniforge 推荐并默认使用
conda-forge
,但用户仍然可以选择从defaults
频道安装包(例如,通过conda install -c defaults some_package
)。保留对defaults
频道的认知允许了这种灵活性。 - 某些非常核心的包或者特定情况下,用户可能仍有理由或需求从
defaults
获取。
- 尽管 Miniforge 推荐并默认使用
至于“是跟这个公司有合作吗?”
- Miniforge/Conda-Forge 与 Anaconda, Inc. 的关系:
- Miniforge 和
conda-forge
是社区驱动的项目,它们在运营上是独立于 Anaconda, Inc. 的。它们的目标是提供一个更开放、由社区维护的包生态系统。 - Anaconda, Inc. 贡献了 Conda 这个开源工具,这是社区能够构建像
conda-forge
这样的频道和 Miniforge 这样的安装程序的基础。 - 所以,这更多的是一种生态系统内的共存和基于开源工具的衍生发展,而不是 Miniforge 项目本身与 Anaconda, Inc. 就
defaults
频道的定义有特定的商业合作。defaults
指向 Anaconda 的频道是 Conda 工具的历史设定。
- Miniforge 和
总结一下:
Miniforge 的核心理念是推广和优先使用 conda-forge
。defaults
频道本身就是 Anaconda 官方频道的代称,这是 Conda 工具的历史设定。Miniforge 通过修改配置来确保 conda-forge
的优先地位,而不是说 Miniforge 主动将 defaults
“设置”为 Anaconda——因为 defaults
本来就是 Anaconda 的。这种设定源于 Conda 的起源,而非 Miniforge 与 Anaconda 公司之间针对此项的特定合作。
conda中使用jupyterlab
官网:https://jupyter.org/install
安装:
bash
pip install jupyterlab
启动:
bash
jupyter lab
编译安装python3
bash
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel bzip2-devel zlib-devel readline-devel sqlite-devel xz-devel libffi-devel
官网下载python源码:
python3124.tar.xz
解压编译:
bash
tar -xf python3124.tar.xz
cd python3124
./configure --prefix=/app/usr/python3
make
make install
加入环境变量:
bash
export PATH=/app/usr/python3/bin:$PATH`
生效:
bash
source ~/.bashrc
软链接python3和pip3:
bash
ln -s python3 python
ln -s pip3 pip
pip安装与国内源设置
pip设置清华源
bash
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.index-url https://pypi.doubanio.com/simple/
linux与windows通用。
linuxmint设置
linuxmint默认就能用python3命令,但不能使用python命令。
安装pip3:
bash
sudo apt install python3-pip
可以只用python3和pip3。
有python但没有pip激活pip
bash
python3 -m ensurepip --upgrade --default-pip
python -m ensurepip --upgrade --default-pip
pipx安装
官方是推荐使用pipx。
bash
sudo apt install pipx
pipx使用介绍:https://zhuanlan.zhihu.com/p/637791135
更好的方式是使用虚拟环境,miniconda,uv等。
pip离线安装软件包
以apscheduler为例:
bash
pip download apscheduler -d /media/sf_share/apscheduler
将 /media/sf_share/apscheduler目录打包,上传到需要离线安装的机器。
在离线机器上,使用以下命令安装包:
解压出来:/home/username/apscheduler
bash
pip install --no-index --find-links=/home/username/apscheduler apscheduler
这里的 /home/username/apscheduler是你存放下载的包的离线目录。
备注:
- 确保下载的包与离线环境中的 Python 版本兼容。
- 如果有多个依赖包,可以一次性下载所有依赖包,或者单独下载每个包。
- 使用 --no-index 选项告诉 pip 不在互联网上查找包。
- 使用 --find-links 指定包含下载的包的本地目录。
- 如果需要安装wheel格式的包,请确保离线环境中已经安装了wheel。