当__init__.py存在时,使用setup构建cython扩展的Python会创建子文件夹

当__init__.py存在时,使用setup构建cython扩展的Python会创建子文件夹,第1张

概述我正在尝试使用以下setup.py编译一个简单的cython模块: from distutils.core import setupfrom Cython.Build import cythonizesetup( ext_modules=cythonize("verifier_c.pyx"),) 我有以下文件夹结构: .c_ext/ __init__.py verifie 我正在尝试使用以下setup.py编译一个简单的cython模块:

from distutils.core import setupfrom Cython.Build import cythonizesetup(    ext_modules=cythonize("verifIEr_c.pyx"),)

我有以下文件夹结构:

.c_ext/  __init__.py  verifIEr_c.pyx  setup.py

如果我运行以下内容:

python setup.py build_ext --inplace

我得到一个额外的c_ext子文件夹,如下所示:

.c_ext/  build/    ...  c_ext/    verifIEr_c.so  __init__.py  verifIEr_c.pyx  setup.py

但是如果删除__init__.py文件,我会将verifIEr_c.so文件放在与verifIEr_c.pyx相同的文件夹中.

我没有找到记录此行为的位置,但我想将verifIEr_c.so保存在与verifIEr_c.pyx相同的文件夹中,但每次运行setup.py时都不必删除__init__.py.我怎样才能做到这一点?

解决方法 正如评论中所提到的,setup.py不应该存在于您的包中.据我所知,build_ext命令没有选项(除了–inplace)以指定目标路径.您可以找到一些文档 here.此外,this question也涉及类似的主题.

要适应所需的包结构,您的包必须如下所示:

c_ext/    setup.py    myfile.py    verifIEr/        __init__.py        verifIEr_c.pyx

您将获得一个存在于验证程序包中的扩展程序:

me@machine:~/c_ext/$python setup.py build_ext --inplacec_ext/    setup.py    myfile.py    verifIEr/        __init__.py        verifIEr_c.pyx        verifIEr_c.so

然后,您可以从验证程序包导入verifIEr_c.例如,从myfile.py看起来像:

from verifIEr import verifIEr_c...

您可以为每个Cython扩展管理单独的包(和文件夹),或者创建一个包含所有这些扩展的子文件夹.您还必须将其他模块传递给cythonize.它可以处理glob pattern,glob模式列表或distutils.Extensions对象列表.后者可以方便地指定cython编译器指令

from distutils.core import setupfrom distutils.extension import Extensionfrom Cython.Build import cythonizeextensions = [    Extension("verifIEr_c",["verifIEr/verifIEr_c.pyx"]),Extension("something_else",["foobar/something_else.pyx"] compiler_directives={'embedsignature': True}),]setup(    ext_modules=cythonize(extensions),)

我希望这有帮助:)

总结

以上是内存溢出为你收集整理的当__init__.py存在时,使用setup构建cython扩展的Python会创建子文件夹全部内容,希望文章能够帮你解决当__init__.py存在时,使用setup构建cython扩展的Python会创建子文件夹所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197497.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存