python-2.7 - 使用 pip 安装的包是否会根据 python 配置发生变化?

标签 python-2.7 pip

我对如何安装/配置Python包依赖项有一个概念上的疑问,这与编译配置有关。

案例1

使用 pip 从用户库空间 (--user) 中配置了 ucs2 的 python 2.7 安装了软件包 pyscreenshot、image、pillow。执行了一些api来获取桌面截图,一切运行顺利。

案例2

执行另一个配置有 ucs4 的 python 2.7,它找到了由于这些包安装在用户空间中的包。执行相同的 api 来获取桌面屏幕截图,它崩溃了。 ucs4 配置与软件包的工作方式不兼容。

那么为什么会发生这种情况呢?是否可以根据 Python 的配置方式安装相同软件包的不同版本?

注意: ucs2/ucs4 说明 https://docs.python.org/2/c-api/unicode.html

最佳答案

So why that happened?

发生这种情况是因为当两个 C(二进制)代码都加载到内存中时,它们各自以不同的方式处理字符串。在 python documentation明确指出:“... UCS2 和 UCS4 Python 版本不兼容二进制。请在编写扩展或接口(interface)时牢记这一 pip 。”

文档还指出:“Python 的默认版本使用 Py_UNICODE 的 16 位类型,并将 Unicode 值在内部存储为 UCS2。”所以你所做的就是:安装一个与默认解释器兼容的包并使用不兼容的Python解释器运行它。

could different versions of the same packages be installed depending on how Python was configured?

我不确定 pip 是否能够处理 UCS2 和 UCS4 包变体。当您使用 UCS4 解释器中的 pip 安装相同的软件包时会发生什么?如果在使用 UCS4 版本的 pip 时安装了 UCS2 版本的软件包,我建议您下载该软件包的源代码发行版并使用 UCS4 自行编译。

我知道pip可以区分操作系统(windows/linux)和ABI,但我不认为它可以处理UCS差异。

关于python-2.7 - 使用 pip 安装的包是否会根据 python 配置发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382621/

相关文章:

Python3 中缺少 Python 2's ` exceptions` 模块,它的内容去哪儿了?

python - 如何使用 python webdriver 在 html 标签之间放置文本

python - 按值查找相同的字典

python - 在 Python 中提取列表元素

python - 从扭曲的服务器向特定客户端发送数据

python - 将虚拟环境项目从本地迁移到服务器(flask 项目),必须重新安装依赖项?

python - pip 成功安装软件包,但从命令行找不到可执行文件

python - 有没有办法让 pip 升级为新的 venv?

python - 在 python 中安装 scipy 模块时出错

python - pip install virtualenv 和 virtualenvwrapper 时出现不支持的语言环境设置错误