1.Python配置和虚拟环境
本是一篇闲言碎语
记一次由拯救爆红C盘引发的,对Python配置和虚拟环境的折腾
- git
- npm
npm(Node Package Manager)是 Node.js 的默认包管理工具,用于管理 JavaScript 项目的依赖、脚本和工具链。
- GithubDesktop
- python
全局PIP_TARGET¶
虽然将Python安装到了D盘
但pip安装包的位置,仍旧在C盘用户目录下
不知道是不是因为,运行pip安装命令时所在目录是C盘用户目录
在powershell中使用
where.exe python而非where python
我通过创建pip.ini设置了路径
路径:
C:\Users\<用户名>\AppData\Roaming\pip\pip.ini
或%userprofile%\AppData\Roaming\pip\pip.ini
内容:
[global]
user = false
target = D:\Python\site-packages
虚拟环境¶
-
创建虚拟环境
python -m venv myenv -
激活虚拟环境:
myenv\Scripts\activate -
在
myenv\Scripts\Activate.ps1中添加以下内容:
放到签名块(
# SIG # Begin signature block)之前
# 设置包安装路径
$env:PIP_TARGET = "D:\path\to\your\repo\myenv\Lib\site-packages"
$env:PYTHONPATH = "$env:PYTHONPATH;D:\path\to\your\repo\myenv\Lib\site-packages"
激活虚拟环境后,检查变量是否生效:
- 关闭虚拟环境:
deactivate - 备份依赖列表:
pip freeze > requirements.txt - 根据
requirements.txt安装依赖:pip install -r requirements.txt
或python -m pip install -r requirements.txt
设置了PYTHONPATH,导致虚拟环境受其影响
在虚拟环境中运行pip
包仍旧安装到全局环境
使用Python内置命令(如
venv)创建虚拟环境时,默认情况下会继承以下全局环境的内容:¶
- Python解释器副本
虚拟环境会复制全局环境的Python解释器二进制文件到其
bin(或Scripts)目录中,但该文件是系统解释器的符号链接或副本,而非独立安装。
- 标准库引用
虚拟环境不会复制标准库(如
os、sys等),而是通过配置文件pyvenv.cfg直接引用全局Python的标准库路径。
- 基础工具
虚拟环境默认包含
pip和setuptools等基础工具,但这些工具是独立安装的,与全局环境的版本无关一些路径查询:¶
- 获取虚拟环境中Python解释器的绝对路径:
python -c "import os, sys; print(os.path.dirname(sys.executable))"
标准库路径:
python -c "import os; print(os.__file__)"第三方包路径:
python -c "import sys; print(sys.path)"PythonPath:
python -c "import os, sys; print(os.path.dirname(sys.executable))"
设置虚拟环境包安装路径¶
方法1¶
在myenv\Scripts\Activate.ps1中添加以下内容:
放到签名块(
# SIG # Begin signature block)之前
# 设置包安装路径
$env:PIP_TARGET = "D:\path\to\your\repo\myenv\Lib\site-packages"
$env:PYTHONPATH = "$env:PYTHONPATH;D:\path\to\your\repo\myenv\Lib\site-packages"
激活虚拟环境后,检查变量是否生效:
方法2¶
修改Python虚拟环境的 sys.path(模块搜索路径):
在 myenv\Lib\site-packages 中新建 .pth 文件
2025.2