pyenv 使用及虚拟环境的设置
14 March 2025
pyenv 使用及虚拟环境的设置
安装 pyenv
curl -fsSL https://pyenv.run | bash
# 配置编译构建环境
```sh
pyenv versions
sudo apt update && sudo apt install -y build-essential
sudo apt install -y libssl-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev zlib1g-dev liblzma-dev liblz4-dev
python --version
pyenv 环境相关
# 列出可安装的版本
pyenv install --list
# 安装新的 Python 版本
pyenv install <version>
# 查看当前版本:
pyenv version
# 在家目录设置一个默认版本
echo "3.11.0" > ~/.python-version
# 列出当前系统中已安装的所有 Python 版本
pyenv versions
# system
# * 3.10.0 (set by /home/luowei/.python-version)
# 全局版本
pyenv global
# 设置全局版本
pyenv global $pyversion
# 局部版本
pyenv local
# 设置局部版本
pyenv local
# 设置全局、局部和当前 shell 会话的 Python 版本
pyenv global $pyversion && pyenv local $pyversion && pyenv shell $pyversion
# 列出虚拟环境
pyenv virtualenvs
# 创建一个名为 v_flux_lora_dlc 的虚拟环境,基于 Python 3.10.0, 并激活
pyenv virtualenv 3.10.0 v_flux_lora_dlc
# 激活虚拟环境
pyenv activate v_flux_lora_dlc
# 设置当前目录使用该虚拟环境,创建一个 .python-version 文件可实现在当前目录下自动使用该虚拟环境
echo "v_flux_lora_dlc" > .python-version
# 退出当前的虚拟环境
pyenv deactivate
# 删除虚拟环境
pyenv uninstall <env_name>
# 如:
pyenv uninstall v_flux_lora_dlc
在虚拟环境的激活脚本中设置环境变量
vim ~/.pyenv/versions/v_flux_lora_dlc/bin/activate
# 在文件末尾添加, 例如:
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
**使用 python venv 在当前目录创建虚拟环境 **
# 创建虚拟环境, 在当前目录创建 myenv 虚拟环境目录
python -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 在指定目录创建虚拟环境
python -m venv /path/to/your/directory/myenv
# 激活指定目录的虚拟环境
source /path/to/your/directory/myenv/bin/activate
# 退出虚拟环境
deactivate
# 激活新的虚拟环境
source /path/to/another/directory/anotherenv/bin/activate
# 删除虚拟环境,要删除虚拟环境,只需删除包含该虚拟环境的目录(确保已退出该环境再删除)
rm -rf /path/to/your/directory/myenv
# 使用指定的 Python 版本创建虚拟环境(可以使用 Python 版本的完整路径,或者如果在系统中配置了多版本的 Python,可以使用 pythonX.Y 的格式(例如 python3.8))
python3.8 -m venv /path/to/your/directory/myenv
# 以下列出 pyenv 在系统中配置的 python 版本
ls -l /home/luowei/.pyenv/shims/python*
# 当前激活的 Python venv 虚拟环境的目录(在激活虚拟环境后,可以通过检查 VIRTUAL_ENV 环境变量来获取当前虚拟环境的路径)
echo $VIRTUAL_ENV
# 或使用 Python 的 sys 模块来获取当前虚拟环境的路径
python -c "import sys; print(sys.prefix)"
