首页 > 解决方案 > 如果我在 Python 3 环境中安装带有 pip 的包,该包是否保证与 Python 3 兼容?

问题描述

我有一个 Python 3 环境,一切都按预期正常工作,即:

$ python --version
Python 3.6.8

$ pip --version
pip 18.1 from /Users/user/.pyenv/versions/3.6.8/envs/myenv/lib/python3.6/site-packages/pip (python 3.6)

我正在将 Python 2 项目移植到 Python 3。我有 Python 2 项目中的 requirements.txt 文件 - 如果我在我的 Python 3 环境中安装这些依赖项,例如

$ pip install -r my_python2_requirements.txt

我保证我的所有依赖项都与 Python 3 兼容吗?

或者换一种说法:是否可以使用 Python 3/pip 安装仅 Python 2 的包(即无法工作的包)。

标签: python-3.xpip

解决方案


我对此并不完全确定,所以我进行了以下测试。

我从 PyPi 中选择了一个标记为“仅限 Python 2”的随机模块,并尝试在两个版本上都安装它。对于我的测试,我使用了 patchit

pip命令命中了相同的 URL,pip3 调用甚至检测到并使用了缓存tar.gz文件。因此,它似乎pip无法提供您想要的保护。(当然对于同时支持2和3的包,应该安装对应的版本)


官方过渡指南

用于caniusepython3找出哪些依赖项阻碍了您使用 Python 3 ( pip install caniusepython3)

这应该有助于确定事情并requirements.txt根据需要进行修改。


推荐阅读