如何使用 python setuptools 和 cythonize 就地构建 .so 文件

问题描述

我有以下目录结构中的文件

dir1
 | setup.py  
 | dir2
   | dir3
     | myFile.py
     | myOtherFile.py    

我想使用 myFile.so 构建 myOtherFile.socythonize 并维护此目录结构。

如果我使用这个脚本:

# setup.py
from setuptools import Extension,setup
from Cython.Build import cythonize
import os

extensions=[Extension('dir2.dir3.*',['dir2/dir3/*.py']]

setup(
    name="my_file",ext_modules=cythonize(extensions,language_level=3)
)

并使用 python setup.py build_ext --inplace 运行它,myFile.cmyOtherFile.c 内置于 dir2/dir3 中,位于相应的 .py 文件旁边,但 myFile.somyOtherFile.so 内置于 dir1 中,即包含 setup.py 的父目录(实际上,它们似乎是从 build 目录复制到那里作为 {{1} },在脚本退出显示setup.py)。

如果我使用命令行版本 >> running build_ext copying build/lib.linux-x86_64-3.7/myFile.cpython-37m-x86_64-linux-gnu.so ->,一切都会按预期工作(即 cythonize -i -3 dir2/dir3/*.py 文件出现在 .so 中)。我需要向我的 dir2/dir3 文件添加什么才能获得相同的行为?

注意:与这个玩具示例不同,我实际上在 setup.py 中有很多文件,所以我想使用通配dir2/dir3 来标识 *.py* 文件,而不是列出他们分别。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)