Windows 上的 Cython 内存视图

2023-12-04

当尝试在 Windows 上使用 Cython 时(基于 Anaconda 的安装,使用 TDM-GCC,因为我需要 OpenMP 支持),我在使用类型化内存视图时遇到了错误。

test1.pyx
def test(int x): pass

test2.pyx
def test(int[:] x): pass

这两个模块都可以使用基本的 setup.py (使用 cythonize)进行编译,但是虽然可以毫无问题地导入 test1,但导入 test2 会引发以下问题:

python3 -c "import test2" (<- Note the use of Python3 -- I haven't tried with Python2)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "stringsource", line 275, in init test2 (test2.c:13146)
UnicodeDecodeError: 'utf-8' codec can't decode byte in position 1: invalid start byte.

显然,test.c 的第 13146 行没有什么特别的。

这是一个已知的问题?或者我做错了什么?欢迎任何帮助。

(从 Cython 用户交叉发布)

澄清:

  • 再次请注意,我使用的是 Python 3(事实上,该错误不会出现在 Python 2 中)。
  • 我正在 Conda 环境中使用 Python 3.4.1 和 Cython 0.20.1 进行全新安装。
  • 我正在使用以下 setup.py。

    from distutils.core import setup; from Cython.Build import cythonize setup(ext_modules=cythonize("test.pyx"))

但是较长的 setup.py (如 Saullo Castro 建议的那样)也没有帮助。

Bounty授予 Saullo Castro,因为他指出 MinGW-64bit 并不受简单支持,尽管我最终使用了不同的解决方案。


我使用的是 Windows 7 64 位、Python 2.7.5 64 位和 Cython 0.20.1,您的代码适合我。

我测试了你的原始代码:

def test(int[:] x):
    s = np.shape(x)[0]
    for i in range(s):
        print x[i]

没有什么问题。我将在这里描述我如何使用 Cython 进行编译以及如何配置我的 C 编译器以与 Cython 一起使用,希望您可以按照以下步骤解决您的问题。

  • 下载和 Microsoft SDK C 编译器根据你的Python版本

  • 在Windows中配置你的编译环境,对我来说是:

SET DISTUTILS_USE_SDK=1
setenv /x64 /release
  • 编译 Cython (简单地做python setup.py应该管用)

  • 有一个很好的setup.py为您.pyx文件,这里遵循我用来启用支持的示例OpenMP:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension('test1',
                         ['test1.pyx'],
                         extra_compile_args=['/openmp', '/O2',
                                             '/favor:INTEL64'])]
setup(name = 'test1',
      cmdclass = {'build_ext': build_ext},
      ext_modules = ext_modules)
  • use import pyximport; pyximport.install()当适用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 上的 Cython 内存视图 的相关文章

  • 从Python中的字符串中提取货币金额

    我正在制作一个程序 从字符串中获取货币并将其转换为其他货币 例如 如果字符串是 the car cost me 13 250 我需要得到 and 13250 我已经有了这个正则表达式 1 确实如此 但是该字符串很有可能有多个价格 并且全部使
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • 将 numpy 数组写入文本文件的速度

    我需要将一个非常 高 的两列数组写入文本文件 而且速度非常慢 我发现如果我将数组改造成更宽的数组 写入速度会快得多 例如 import time import numpy as np dataMat1 np random rand 1000
  • TCHAR 仍然相关吗?

    我是 Windows 编程新手 在读完 Petzold 的书后 我想知道 使用TCHAR类型和 T 函数来声明字符串或者我应该使用wchar t and L 新代码中的字符串 我将仅针对现代 Windows 截至撰写本文时版本 10 和 1
  • 为什么我的代码不能根据字典解码加密字符串?

    我有一本字典 其中包含代表字母的键和值 例如一个简单的 DICT CODE b g n a p o x d t y 我收到了一个加密代码 并将该字符串转换为一个列表 其中每个项目都是一个单词 我需要根据字典中的项目来解决它 代码示例是 wo
  • numpy 使用 datetime64 进行数字化

    我似乎无法让 numpy digitize 与 datetime64 一起使用 date bins np array np datetime64 datetime datetime 2014 n 1 s for n in range 1 1
  • 更改 python tkinter canvas 中的线坐标

    我画了一条线tkinter Canvas现在我想移动一端 这可能吗 例如和itemconfig import tkinter tk tkinter Tk canvas tkinter Canvas tk canvas pack line c
  • Python Pandas 根据另一列的总计从另一个数据帧中选择值

    我下面有一个 DataFrame 但我需要根据取消和订单列从每个代码中选择行 假设代码 xxx 的阶数为 6 1 5 1 阶数为 11 我需要一种算法 可以选择满足总共 11 行的行 阶数为 6 5 如果没有行匹配 则选择最接近的 id 并
  • python是带有字符串的运算符行为[重复]

    这个问题在这里已经有答案了 我无法理解以下行为 我正在创建 2 个字符串 并使用 is 运算符来比较它 对于第一种情况 它的工作方式有所不同 对于第二种情况 它按预期工作 当我使用逗号或空格时 它显示是什么原因False与比较is当没有使用
  • PySide6.1 与 matplotlib 3.4 不兼容

    当我只安装PySide6时 GUI程序运行良好 但是一旦我安装了matplotlib及其依赖包 包括pyqt5 则GUI程序将无法运行并输出以下错误消息 This application failed to start because no
  • 动态 __init_subclass__ 方法的参数绑定

    我正在尝试让类装饰器工作 装饰器会添加一个 init subclass 方法到它所应用的类 但是 当该方法动态添加到类中时 第一个参数不会绑定到子类对象 为什么会发生这种情况 举个例子 这是可行的 下面的静态代码是我试图最终得到的示例 cl
  • 如何使用 Django 项目设置 SQLite?

    我已阅读 Django 文档 仅供参考 https docs djangoproject com en 1 3 intro tutorial01 https docs djangoproject com en 1 3 intro tutor
  • 在Python中计算内存碎片

    我有一个长时间运行的进程 不断分配和释放对象 尽管正在释放对象 但 RSS 内存使用量会随着时间的推移而增加 如何计算发生了多少碎片 一种可能性是计算 RSS sum of allocations 并将其作为指标 即便如此 我该如何计算分母
  • 如何使用 paramiko 查看(日志)文件传输进度?

    我正在使用 Paramiko 的 SFTPClient 在主机之间传输文件 我希望我的脚本打印文件传输进度 类似于使用 scp 看到的输出 scp my file user host user host password my file 1
  • 使用 numpy 在 python 中执行最大方差旋转

    我正在研究矩阵的主成分分析 我已经找到了如下所示的组件矩阵 A np array 0 73465832 0 24819766 0 32045055 0 3728976 0 58628043 0 63433607 0 72617152 0 5
  • Python 声音(“铃声”)

    我想让一个 python 程序在完成任务时通过发出嘟嘟声来提醒我 目前 我使用import os然后使用命令行语音程序说 进程完成 我更愿意它是一个简单的 铃 我知道有一个函数可以用于Cocoa apps NSBeep 但我认为这与此没有太
  • 无法在 python 3.8 上将带有 webapp 的 python 部署到 azure

    我正在尝试使用部署一个测试项目Flask使用以下方法将框架迁移到 Azure 云中Azure CLI https learn microsoft com en us azure app service containers quicksta
  • Pandas - 合并数据框以将所有值保留在左侧,如果“左侧没有键”,则从右侧“插入”值,否则“更新”左侧现有的“键”

    我有两个数据框 df1 和 df2 np random seed 0 df1 pd DataFrame key A B C D id 2 23 234 2345 2021 np random randn 4 df2 pd DataFrame
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可

随机推荐

  • 如何在 Jenkins 托管的网格上使用 Chromedriver 设置 Selenium

    我刚刚迈出了使用 Selenium 的第一步 我成功设置了一个测试 Firefox 驱动程序 在我的 Jenkins 上的 Selenium 网格上运行 使用 Jenkins Selenium Grid 插件 我还在运行 Jenkins 的
  • JavaScript sweetAlert 弹出窗口在一秒钟后自行关闭

    我有一个 SweetAlert 弹出窗口 但它会自动关闭 通常它应该保留到用户单击 确定 为止 我已经包含并测试了所有 SweetAlert 文件
  • 通过 RStudio 加载 com.databricks.spark.csv

    我已经安装了Spark 1 4 0 我还安装了它的 R 包 SparkR 并且可以通过 Spark shell 和 RStudio 使用它 但是 有一个我无法解决的差异 启动 SparkR shell 时 bin sparkR master
  • for 循环中的 MATLAB 和元胞数组处理

    我是 MATLAB 新手 想从数据库中获取的元胞数组中提取数据 sensors 1 23 1 0 0 1000 1x29 char 2 23 1 120 0 1000 1x43 char 3 23 1 120 0 1000 1x42 cha
  • FaceBook 应用程序:检索我的应用程序用户的 ID 列表

    我可以使用 fql 或 graph api 检索它吗 每次用户访问您的应用程序时 都可以像这样检索他的 facebook id facebook new Facebook api key secret facebook gt require
  • 关闭时为详细信息标签设置动画

    我正在为我的历史项目开发一个网站 但遇到了一个问题 我尝试为详细信息标签设置动画 但似乎没有任何效果 这是我用于打开动画的代码 keyframes open 0 opacity 0 transform translateY 1vw 100
  • 如何在 Visual Studio 2010 中打开 IntelliSense?

    我正在尝试为 aspx 文件类型启用智能感知 我在文本编辑器选项中检查了自动列表成员 勾选隐藏高级会员与否没有什么区别吗 如何在 vs net 2010 中启用智能感知 应立即为 ASP NET 启用 IntelliSense 包括 asp
  • Python 将图像转换为使用更少的颜色

    我想拍摄一张图像并 以某种方式 将其读取为像素数组 这意味着 2d 数组的每个元素都是表示该像素颜色的十六进制代码或 RGB 三元组 我研究过图像处理 发现了 Pillow 或 SciPy 之类的东西 但我只发现了过于简单的东西 例如添加过
  • Python 正则表达式匹配无法匹配孟加拉语句子中的特定单词

    这里有奇怪的小问题 我有孟加拉语 随机 句子 我尝试在其上运行正则表达式 使用Pythonre库 像这样 令牌 4 re search r b b
  • Square 有沙盒测试帐户吗?

    我正在尝试为 Square Connect API 开发一个包装器 我正在寻找沙盒帐户或将测试数据导入新帐户的方法 以便我可以快速开始开发方面 谢谢你 为了供从 Google 登陆这里的人们将来参考 Square 现在提供此功能 每个帐户都
  • 读取原子修改的值是否需要内存屏障?

    鉴于以下情况 class Foo public void Increment InterlockedIncrement m value OSIncrementAtomic long GetValue return m value priva
  • Scrapy:抓取链接列表

    这个问题有点后续this我之前问过的问题 我正在尝试抓取一个首页上包含一些链接的网站 类似的东西this 现在 由于我想抓取页面上存在的项目的详细信息 因此我提取了它们各自的 URL 我已将这些 URL 保存在列表中 如何启动蜘蛛来单独抓取
  • bsxfun 真的按元素应用吗?

    假设我有以下函数 function x printAndKeepX x y x y end 我调用bsxfun像这样 bsxfun printAndKeepX 1 4 1 Were bsxfun真的逐个元素 我希望printAndKeepX
  • 解析 JSON 响应,其中对象以 C# 中的数字开头

    我正在尝试将 REST 服务的响应反序列化为 C 强类型类 但是我遇到了本文中的相同问题 如何输出键以数字开头的 JSON 值 但是我有一个问题 你不能在 C 中以数字开头变量名 这意味着该级别的类只会反序列化为 null 我需要知道如何进
  • 从 VBA 运行 python 脚本

    下面的代码在一台机器上从 Windows excel VBA Shell 执行简单的 python 脚本 但不在另一台机器上执行 Sub RunIt CreateObject wscript shell Run python exe acn
  • 如何在 StartupTask 中为可执行文件指定参数

    当桌面应用程序设置为在启动时运行时 它们通常会最小化到系统托盘 实现此行为的常见方法是在向启动文件夹或注册表添加快捷方式时为可执行文件指定一个特殊参数 MyApp exe startminimized 我在转换后的桌面应用程序中需要同样的东
  • 使用 JSON 从 AJAX 和 JQuery 调用简单的 Web 服务(.asmx 文件) - 解析错误

    迈出尝试一起使用所有这些技术的第一步 我遇到了一些麻烦 这是我的服务器端 WebMethod EnableSession true ScriptMethod ResponseFormat ResponseFormat Json public
  • MySQL:对多个字段进行分组和计数

    如果我有一个字段 例如 project id 我想计算出现次数 我会这样做 select project id count project id as count from tbl group by project id order by
  • Maven:运行 Maven 时打开 zip 文件时出错

    ERROR error error reading C Users suresh m2 repository org jdom jdom 1 1 jdom 1 1 jar error in opening zip file ERROR er
  • Windows 上的 Cython 内存视图

    当尝试在 Windows 上使用 Cython 时 基于 Anaconda 的安装 使用 TDM GCC 因为我需要 OpenMP 支持 我在使用类型化内存视图时遇到了错误 test1 pyx def test int x pass tes