【问题标题】:Compiled cpython file missing from installed library已安装的库中缺少已编译的 cpython 文件
【发布时间】:2019-01-07 22:25:05
【问题描述】:

我们使用的库依赖于另一个名为 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) 有人可以解释或指出一个资源,了解在生成已编译的cpython.so 文件的pip install somelibrary 过程中发生的事情吗?

我的系统信息:

  • Ubuntu 18.04
  • 在 pyenv 中运行的 Python 3.4.3
  • 平台版本为#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)

【问题讨论】:

  • 取决于它的安装方式。 .so 文件并不总是必要的。通常python会先搜索.so文件,然后再搜索.py文件。运行 strace -o trace_output.txt python 向您展示它是如何工作的。

标签: python cpython pypy


【解决方案1】:

1 该问题已修复并关闭

2 您应该检查pip install --log /tmp/metaphone.txt --ignore-installed metaphone 的输出和/tmp/metaphone.txt 日志文件,看看您是否缺少构建*.so 所需的组件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多