栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

带有__init __。pyx的Cython软件包:可能吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

带有__init __。pyx的Cython软件包:可能吗?

根据这个确实很老的邮件列表帖子,如果您还有一个

__init__.py
文件,它也可以工作(该
__init__.py
文件未使用,但对于将目录视为模块,从而
__init__.so
加载该文件似乎是必需的)。

如果我添加

__init__.py

# an exception just to confirm that the .so file is loaded instead of the .py fileraise importError("__init__.py loaded when __init__.so should have been loaded")

那么您的示例可在Linux Python 2.7.3上运行:

$ python -c 'import foo; foo.hello_world()'hello worldblah

这有一个拐弯处的情况,因此不建议使用。请注意,在Windows上,这似乎对我不起作用

importError: DLL load failed: %1 is not a valid Win32 application.

附录 (需要一些额外说明):

似乎没有明确记录此行为。在关于Python
1.5时代的软件包的原始描述中,他们说:

如果没有

__init__.py
,则无法将目录识别为包

提示:搜索顺序由函数返回的后缀列表确定

imp.get_suffixes()
。通常,后缀按以下顺序搜索:“。so”,“
module.so”,“。py”,“。pyc”。目录没有显式出现在此列表中,而是位于其中的所有条目之前。

观察到的行为当然与此一致-

__init__.py
需要将目录视为一个包,但是优先加载.so文件而不是.py文件-但这并不是明确的。

从Cython的角度来看,此行为似乎已用于编译标准库(在这种情况下

__init__.py
始终存在),或者在给出的测试用例中使用https://github.com/cython/cython/blob/master/
tests / build /
package_compilation.srctree(还有其他一些示例)。在这些文件中,“
srctree”文件看起来将扩展为包含
__init__.py
(然后是其他文件)然后编译的各种文件夹。仅有的
__init__.so
经历可能从未被测试过。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号