首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随pip安装的软件包是否根据python的配置进行更改?

随pip安装的软件包是否根据python的配置进行更改?
EN

Stack Overflow用户
提问于 2019-05-30 17:04:57
回答 1查看 101关注 0票数 2

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

案例1

在用户库空间(-- user )中使用Python2.7中的pip安装了pyscreenshot, image, pillow包,其中配置了ucs2。执行了一些api来获得桌面屏幕截图,一切运行顺利。

案例2

执行另一个用ucs4配置的python2.7,它会发现包是安装在用户空间中的。执行相同的api来获取桌面屏幕快照,它就会崩溃。ucs4配置与包的工作方式不兼容。

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

注:ucs2 2/ucs2 4解释https://docs.python.org/2/c-api/unicode.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 20:38:44

那为什么会发生这种事?

之所以发生这种情况,是因为当两个C(二进制)代码加载到内存中时,每个代码都以不同的方式处理字符串。在python文档中,我们清楚地指出:“. UCS2和UCS4构建并不是二进制兼容的,在编写扩展或接口时请记住这一点。”

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

是否可以根据Python的配置方式安装相同软件包的不同版本?

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

我知道pip可以区分os (windows / linux)和ABI,但我认为它不能处理UCS之间的差异。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56382621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档