小编use*_*133的帖子

Python安装脚本扩展,你如何包含.h文件?

所以我有一个看起来像这样的目录:

 home\
     setup.py
     some_python_file.py
     ext\
         __init__.py
         c_file1.c
         c_file2.c
         ext_header.h
Run Code Online (Sandbox Code Playgroud)

显然,头文件是编译c文件所必需的,但问题是我无法让安装脚本包含头文件.

我的扩展对象是这样的:

Extension('ext.the_extension', ['ext/c_file1.c', 'ext/c_file2.c'])
Run Code Online (Sandbox Code Playgroud)

哪个有效,但不包括头文件.如果我将其更改为:

Extension('ext.the_extension', ['ext/c_file1.c', 'ext/c_file2.c', 'ext_header.h'])
Run Code Online (Sandbox Code Playgroud)

它包含'.h'文件,但在运行install时不会构建.相反,它给出了错误error: unknown file type '.h' (from 'ext/ext_header.h')

如果我将头文件包含为这样的数据文件:

data_files=[('ext', ['ext/ext_header.h'])]
Run Code Online (Sandbox Code Playgroud)

它根本不起作用,.h文件甚至没有进入MANIFEST文件.

所以我的问题是,你如何将这个扩展包含在头文件中以便python setup.py install正确构建它?

c python installation setup.py

10
推荐指数
1
解决办法
3226
查看次数

测试递归 Python 函数

我有一个要测试的递归函数,但是在测试期间我很难限制递归调用。例如,下面是一个简单的递归函数示例,它调用 bool_function(n) 来检查它是否应该中断递归循环。

def factorial(n):
  if bool_function(n):
      return 1
  else:
      return n * factorial(n-1)
Run Code Online (Sandbox Code Playgroud)

测试或模拟 bool_function(n) 的最佳方法是什么,以便第一次迭代为真,之后的任何调用为假?

python testing recursion mocking

3
推荐指数
1
解决办法
2466
查看次数

标签 统计

python ×2

c ×1

installation ×1

mocking ×1

recursion ×1

setup.py ×1

testing ×1