ext_modules=[CMakeExtension('Vis')]
时间: 2024-06-02 15:08:23 浏览: 85
这段代码是在使用 CMake 构建 Python 扩展模块,其中 `Vis` 是扩展模块的名称。`CMakeExtension` 是一个自定义的 setuptools 扩展类,用于将 CMake 构建系统与 Python 扩展模块集成。`ext_modules` 是 setuptools 的一个属性,用于指定要构建的扩展模块。
相关问题
"ret_code=1&agent_id=&bill_id=&jnet_bill_no=&bill_status=&card_real_amt=&card_settle_amt=&card_detail_data=&ret_msg=无效的订单号&ext_param=&sign=581f1d192ecc2568ca153069dbe17dfb"截取字符串变成键值对数组
可以通过以下步骤将该字符串截取成键值对数组:
1. 先使用 `explode()` 函数将字符串按照 `&` 分割成数组;
2. 遍历数组,再使用 `explode()` 函数将每个元素按照 `=` 分割成键值对;
3. 将键值对以关联数组形式存储起来。
可以参考下面的代码示例:
```php
$str = "ret_code=1&agent_id=&bill_id=&jnet_bill_no=&bill_status=&card_real_amt=&card_settle_amt=&card_detail_data=&ret_msg=无效的订单号&ext_param=&sign=581f1d192ecc2568ca153069dbe17dfb";
// 将字符串按照 & 分割成数组
$arr = explode('&', $str);
// 遍历数组,将每个元素按照 = 分割成键值对
$params = [];
foreach ($arr as $item) {
$pair = explode('=', $item);
$key = $pair[0];
$value = isset($pair[1]) ? $pair[1] : '';
$params[$key] = $value;
}
// 输出结果
print_r($params);
```
输出结果如下:
```
Array
(
[ret_code] => 1
[agent_id] =>
[bill_id] =>
[jnet_bill_no] =>
[bill_status] =>
[card_real_amt] =>
[card_settle_amt] =>
[card_detail_data] =>
[ret_msg] => 无效的订单号
[ext_param] =>
[sign] => 581f1d192ecc2568ca153069dbe17dfb
)
```
我的setup.py中的代码是这样写的:from distutils.core import setup from distutils.extension import Extension import Cython from Cython.Build import cythonize import numpy extensions = [ Extension('models.model', ['model.pyx'], include_dirs=[numpy.get_include()],language="c++"), ] setup( name='models', ext_modules=cythonize(extensions), ) # 添加以下两行代码 for e in extensions: e.cython_directives = {"language_level": 3} ext_modules = cythonize(extensions),但是当我运行python setup.py build_ext --inplace命令时,却只生成了该.pyx对应的cpp文件,没有对应的hpp文件可能的原因是什么
可能是因为您没有在Extension中指定生成的头文件的名称和路径。可以尝试在Extension中添加以下参数:
```python
Extension('models.model',
sources=['model.pyx'],
include_dirs=[numpy.get_include()],
language="c++",
extra_compile_args=["-std=c++11"],
extra_objects=[],
extra_link_args=[],
define_macros=[],
undef_macros=[],
swig_opts=[],
depends=[],
header_dirs=[],
libraries=[],
library_dirs=[]),
```
其中,`header_dirs`参数可以用来指定生成的头文件所在的路径。例如,如果您希望生成的头文件存放在与`.pyx`文件相同的目录下,可以将`header_dirs`设置为`['.']`。
另外,由于您使用了C++语言特性,需要在`extra_compile_args`中添加`"-std=c++11"`或者更高版本的标志。
最后,您还需要检查您的Cython版本是否符合要求。在Cython 0.29之前的版本中,`cythonize`函数的默认值是生成C文件而不是C++文件。如果您的Cython版本比较旧,可以尝试在`cythonize`函数中添加`language="c++"`参数,以确保生成的是C++代码。
阅读全文