Python project with C extensions - structure, imports and tests
一个用python编写的项目,带有一些C扩展(不使用SWIG等)。我试图弄清楚如何构建我的项目,以便:
目前的结构如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Project\ docs\ # mainly documentation, right? bin\ # empty setup.py # setup for the project, as suggested in the above link project\ __init__.py module.py tests\ bla_test.py C\ # the package of C files file.c file.so other_c_stuff.c header.h setup.py # setup to compile the C files and create .so files build\ # contaisn a bunch of (hopefully) irrelevant stuf |
它适用于PyDev,但不适用于shell。理想的答案将解决以下问题:
我试过相对进口 - 由于某些原因它们不适合我。
我看到了接受这个问题的答案。他说 - 做任何事。但我不能让进口工作。我读了这个答案,但不知道他有什么东西(我没有)。接受的答案对我没有帮助,因为再次进口失败了。这个博客文章提供了很好的建议,但再次,进口!
我不想详细说明一般答案,因为你已经把它与好的答案挂钩了。
一些适合你的结构可能看起来像:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Project\ build\ # directory used by setup.py docs\ # mainly documentation, right? setup.py # setup for the project, as suggested in the above link project\ __init__.py module.py c_package\ __init__.py file.c file.so other_c_stuff.c header.h tests\ __init__.py test_bla.py |
因此,如果您在适当的位置构建C Extensions,则在
1 | python setup.py build_ext --inplace |
或创建一个
1 2 | [build_ext] inplace=True |
但只能使用它进行开发而不释放它,因为安装将失败。
构建自动化是可能的,但我不知道除了C源更改之外直接调用