我想使用Python3中的importlib.machinery.EXTENSION_SUFFIXES
,但不幸的是使用Python2.7。
EXTENSION_SUFFIXES
的计算结果为['.cpython-34m-x86_64-linux-gnu.so', '.cpython-34m.so', '.abi3.so', '.so']
,但这是特定于我的机器和可能是python版本的,所以我不能简单地硬编码列表。
这里是在Python3的源代码中构建EXTENSION_SUFFIXES
的地方:external.py#L1431。然而,它似乎深入到了C实现(链接)中,所以我不清楚如何获得这些信息。
如何在Python2.7中获得这个列表?
发布于 2017-11-15 20:13:18
使用imp.get_suffixes()
代替:
返回一个三元元组的列表,每个元组描述一个特定类型的模块.每个三元组都有一个表单(后缀、模式、类型),其中后缀是一个字符串,用于形成要搜索的文件名,模式是传递给内置open()函数以打开文件的模式字符串(对于文本文件可以是'r‘,对于二进制文件可以是'rb’),类型是文件类型,其值为PY_SOURCE、PY_COMPILED或C_EXTENSION之一,如下所述。
因此,要将此筛选为C扩展模块的后缀列表,请执行以下操作:
import imp
extension_suffixes = [suffix for (suffix, mode, type) in imp.get_suffixes()
if type == imp.C_EXTENSION]
这也适用于Python3,尽管Python3中不推荐使用imp
。
https://stackoverflow.com/questions/47315679
复制相似问题