Mingw64环境下Pipenv无法激活虚拟环境的排查与修复求助
Mingw64环境下Pipenv无法激活虚拟环境的排查与修复求助
大家好,我在基于MSYS2的Mingw64环境里装了mingw64/mingw-w64-x86_64-python-pipenv 2025.0.2-1,最近创建新虚拟环境时遇到了奇怪的问题:虚拟环境明明显示创建成功,激活后命令行前缀也出现了环境标识,但Python的路径并没有切换到虚拟环境里的版本,全程也没有任何报错提示。
先给大家看一下我的环境信息和完整操作过程:
$ uname -a MINGW64_NT-6.3-9600 Corona 3.6.1-28176974.x86_64 2025-04-20 19:58 UTC x86_64 Msys
创建测试环境的步骤及输出:
$ mkdir test && cd test $ pipenv shell Creating a virtualenv for this project Pipfile: D:/Development/msys2/home/Flachs/test/Pipfile Using D:/Development/msys2/mingw64/bin/python.exe3.12.10 to create virtualenv... [=== ] Creating virtual environment...created virtual environment CPython3.12.10.final.0-64 in 1863ms creator CPython3Windows(dest=D:/Development/.virtualenvs/test-sZ6QxXrV, clear=False, no_vcs_ignore=False, global=False) seeder FromAppData(download=False, pip=bundle, via=copy, app_data_dir=C:/Users/Flachs/AppData/Local/pypa/virtualenv) added seed packages: pip==25.0.1 activators BashActivator,BatchActivator,FishActivator,NushellActivator,PowerShellActivator,PythonActivator Successfully created virtual environment! [ ===] Creating virtual environment... Virtualenv location: C:/Users/Flachs/.virtualenvs/test-sZ6QxXrV Launching subshell in virtual environment... (test-sZ6QxXrV) $ which python /mingw64/bin/python
能看到命令行前面已经出现了虚拟环境的标识(test-sZ6QxXrV),但which python返回的还是系统Mingw64目录下的Python,完全没切换到虚拟环境对应的路径C:/Users/Flachs/.virtualenvs/test-sZ6QxXrV/Scripts/python.exe。
目前我自己临时写了个修复脚本,在/etc/bash.bashrc里添加了这段内容:
if [[ -n "$PIP_PYTHON_PATH" ]]; then echo "changed python path to $(cygpath ${PIP_PYTHON_PATH%python.exe})" PATH=$(cygpath ${PIP_PYTHON_PATH%python.exe}):$PATH fi
这个临时办法能让Python路径强制切换到虚拟环境,但毕竟只是个 workaround,想请教大家有没有更根本的解决思路?或者该从哪些方向进一步排查这个激活异常的原因?
内容来源于stack exchange
相关产品推荐
相关产品推荐

