无法使用Pipenv安装依赖或激活虚拟环境的问题求助
问题描述
安装Pipenv后无法创建Pipfile,使用已有Pipfile安装依赖时触发解析失败错误,执行pipenv install requests报错,pipenv install --skip-lock无输出,pipenv lock --pre --clear同样报错。
报错信息
PS D:\Projetos\Python\shipay\backend-challenge\bot> pipenv install requests Installing requests... Pipfile.lock (d5437b) out of date, updating to (c4c73e)... Locking [packages] dependencies... [ =] Resolving dependencies... ERROR:pip.subprocessor:[present-rich] python setup.py egg_info exited with 1 [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv/resolver.py", line 812, in _main [ResolutionFailure]: pre, clear, verbose, system, write, requirements_dir, packages, category [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv/resolver.py", line 767, in resolve_packages [ResolutionFailure]: requirements_dir=requirements_dir, [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv/resolver.py", line 747, in resolve [ResolutionFailure]: req_dir=requirements_dir, [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv\utils\resolver.py", line 1109, in resolve_deps [ResolutionFailure]: req_dir=req_dir, [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv\utils\resolver.py", line 899, in actually_resolve_deps [ResolutionFailure]: resolver.resolve() [ResolutionFailure]: File "C:/Users/leand/AppData/Roaming/Python/Python311/site-packages/pipenv\utils\resolver.py", line 687, in resolve [ResolutionFailure]: raise ResolutionFailure(message=str(e)) [pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies. You can use $ pipenv install --skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation. Hint: try $ pipenv lock --pre if it is a pre-release dependency. ERROR: metadata generation failed
现有Pipfile内容
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] apscheduler = "*" flask = "*" psycopg2 = "*" flask-sqlalchemy = "*" xlsxwriter = "*" logging = "*" requests = "*" [requires] python_version = "3.7"
解决方案
1. 修复Python版本不匹配
从报错路径可见当前使用Python3.11,但Pipfile指定Python3.7,版本不兼容是核心问题:
- 安装Python3.7并添加到系统PATH
- 重新指定Pipenv的Python版本:
pipenv --python 3.7
2. 清理无效依赖
logging是Python标准库,无需在Pipfile中声明,直接删除该行。
3. 替换psycopg2为psycopg2-binary
psycopg2需要编译环境,Windows环境下用预编译的psycopg2-binary更稳妥,修改Pipfile对应行:
psycopg2-binary = "*"
4. 指定兼容Python3.7的依赖版本
用*拉取最新版本会导致大量包不再支持Python3.7,修改为兼容版本范围,示例Pipfile:
[[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] [packages] apscheduler = "<3.10" flask = "<2.3" psycopg2-binary = "<2.9" flask-sqlalchemy = "<3.1" xlsxwriter = "*" requests = "<2.32" [requires] python_version = "3.7"
5. 彻底清理缓存后重新初始化
- 删除现有
Pipfile.lock和.virtualenv目录(若存在) - 执行清理命令:
pipenv --rm pip cache purge - 重新安装依赖:
pipenv install
6. 临时替代方案:切换到pip-tools
若Pipenv仍无法正常工作,可暂时用pip-tools替代:
- 安装pip-tools:
pip install pip-tools - 将Pipfile内容转为
requirements.in,生成锁定文件并同步依赖:pip-compile requirements.in pip-sync
内容的提问来源于stack exchange,提问作者Lauz
相关产品推荐
相关产品推荐

