如何通过Bash脚本从Python解释器路径获取site-packages目录路径
直接可用的单行Bash命令
直接在终端运行以下命令即可输出当前虚拟环境对应的site-packages完整路径:
echo "$(dirname "$(dirname "$(which python)")")/lib/$(ls -1 "$(dirname "$(dirname "$(which python)")")/lib/" | grep -m1 '^python3\.[0-9]\+$')/site-packages/"
更完善的可复用脚本版本
如果需要处理异常场景(比如找不到Python解释器、路径不存在等),可以使用以下脚本:
#!/bin/bash # 获取当前Python解释器路径 PYTHON_PATH=$(which python 2>/dev/null) if [ -z "$PYTHON_PATH" ]; then echo "错误:未找到当前环境的Python解释器" >&2 exit 1 fi # 回退两级目录得到虚拟环境根路径 VENV_ROOT=$(dirname "$(dirname "$PYTHON_PATH")") # 匹配lib目录下的python3.x版本目录 PY_VERSION_DIR=$(ls -1 "$VENV_ROOT/lib/" 2>/dev/null | grep -m1 '^python3\.[0-9]\+$') if [ -z "$PY_VERSION_DIR" ]; then echo "错误:未找到对应Python版本目录" >&2 exit 1 fi # 拼接完整site-packages路径 SITE_PACKAGES_PATH="$VENV_ROOT/lib/$PY_VERSION_DIR/site-packages/" # 校验路径有效性后输出 if [ -d "$SITE_PACKAGES_PATH" ]; then echo "$SITE_PACKAGES_PATH" else echo "错误:site-packages目录不存在" >&2 exit 1 fi
使用方法:将代码保存为get_venv_site_packages.sh,执行chmod +x get_venv_site_packages.sh赋予执行权限后直接运行即可。
内容的提问来源于stack exchange,提问作者bluesummers
相关产品推荐
相关产品推荐

