我们使用的库依赖于另一个名为Jellyfish
的库。该库实现的逻辑是,如果有cpython
版本,它将导入该版本。如果没有,它将使用pypy
版本。
Pypy存在一个已知问题(参考:https://github.com/jamesturk/jellyfish/issues/46),其中,变音位库的pypy实现与cpython版本不一致。
在同事的虚拟环境中,他们都有安装时创建的文件cjellyfish.cpython-34m.so
,但我没有。结果,我的代码的行为与它们的行为不同(我们在此try / except的另一端:https://github.com/jamesturk/jellyfish/blob/master/jellyfish/init.py)
我很好奇为什么我的系统没有cjellyfish.cpython-34m.so
文件,而其他系统却没有。诚然,这可能是因为我对pip安装过程中发生的事情以及在什么阶段可能会发生编译不很熟悉。
所以我有几个问题,所有问题都可能与之相关:
1)您能想到什么会导致文件无法生成?
2)在编译失败的情况下,我可以找到一个包含错误/日志消息的地方吗?
3)有人可以向我解释或指向某个资源,来了解在生成编译后的pip install somelibrary
文件的cpython.so
过程中会发生什么吗?
我的系统信息:
#45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018
platform.python_implementation()
在本地CPython
(与我的同事相匹配)platform.python_compiler()
是'GCC 7.3.0',与我的同事不同(例如GCC 4.4.7 20120313 (Red Hat 4.4.7-11)
)答案 0 :(得分:0)
1该问题已解决,并且已经解决
2您应该检查pip install --log /tmp/metaphone.txt --ignore-installed metaphone
和/tmp/metaphone.txt
日志文件的输出,以查看是否缺少构建*.so
所需的组件