首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python2.7等效于importlib.machinery.EXTENSION_SUFFIXES

Python2.7等效于importlib.machinery.EXTENSION_SUFFIXES
EN

Stack Overflow用户
提问于 2017-11-15 19:24:57
回答 1查看 838关注 0票数 3

我想使用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中获得这个列表?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-15 20:13:18

使用imp.get_suffixes()代替:

返回一个三元元组的列表,每个元组描述一个特定类型的模块.每个三元组都有一个表单(后缀、模式、类型),其中后缀是一个字符串,用于形成要搜索的文件名,模式是传递给内置open()函数以打开文件的模式字符串(对于文本文件可以是'r‘,对于二进制文件可以是'rb’),类型是文件类型,其值为PY_SOURCE、PY_COMPILED或C_EXTENSION之一,如下所述。

因此,要将此筛选为C扩展模块的后缀列表,请执行以下操作:

代码语言:javascript
代码运行次数:0
运行
复制
import imp
extension_suffixes = [suffix for (suffix, mode, type) in imp.get_suffixes()
                             if type == imp.C_EXTENSION]

这也适用于Python3,尽管Python3中不推荐使用imp

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

https://stackoverflow.com/questions/47315679

复制
相关文章

相似问题

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