Windows 10 上的 anaconda cythonize C++

     2023-02-23     48

关键词:

【中文标题】Windows 10 上的 anaconda cythonize C++【英文标题】:anaconda cythonize C++ on windows 10 【发布时间】:2018-08-17 21:55:50 【问题描述】:

我的 c++ 代码可以在安装在我的 PC 上的 MSVS 2015 中正常编译。我的任务是使用 cython 制作一个 python 扩展,以便能够从我们的 python 应用程序调用 c++ 函数。我已经安装了带有 cython 的 anaconda 5.2。 c++ 有一堆头文件,编译时需要包含在内。我正在尝试构建一个功能并遇到相同的错误。

对于一个函数,我的 test.pyx 看起来像这样:

cimport test
cimport cython
def pxd_PIXCIclose():
    res = test.pxd_PIXCIclose()
    return res

test.pxd如下:

cdef extern from "D:\epix\inc\xcliball.h":  
int pxd_PIXCIclose()

setup.py 是:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize

ext_modules = Extension(
                name = "test",
                sources=["test.pyx"],
                include_dirs=["D:\epix\lib", "D:\epix\inc"],  
                library_dirs="D:\epix\inc\XCLIBW64.lib","D:\epix\lib\PXIPLW64.lib"]
              )

setup(
  name = "test.pyx",
  ext_modules = cythonize([ext_modules])
)

test.c 已创建,但随后我在 C++ 包含文件夹中的标头上收到一堆构建错误:

python setup.py build_ext --inplace --compiler=msvc

Compiling test.pyx because it depends on .\test.pxd.
[1/1] Cythonizing test.pyx
running build_ext
building 'test' extension

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe 
/c /nologo /Ox /W3 /GL /DNDEBUG /MD -ID:\epix\lib -ID:\epix\inc - 
IC:\Anaconda3\include -IC:\Anaconda3\include "-IC:\Program Files 
(x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files 
(x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\ucrt" "-IC:\Program Files 
(x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\shared" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\winrt" /Tctest.c 
/Fobuild\temp.win-amd64-3.6\Release\test.obj
test.c

d:\epix\inc\pxlibsv.h(312): error C2061: syntax error: identifier 'HANDLE'
d:\epix\inc\pxlibsv.h(317): error C2059: syntax error: ''
d:\epix\inc\pxlibsv.h(827): error C2143: syntax error: missing ')' before 
'*'
d:\epix\inc\pxlibsv.h(827): error C2081: 'HANDLE': name in formal parameter 
list illegal
d:\epix\inc\pxlibsv.h(827): error C2143: syntax error: missing ';' before 
'*'
d:\epix\inc\pxlibsv.h(827): error C2059: syntax error: '*'
.
.
.
d:\epix\inc\xclibsc.h(369): fatal error C1003: error count exceeds 100; 
stopping compilation
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 
14.0\\VC\\BIN\\x86_amd64\\cl.exe' failed with exit status 2

我猜我的 setup.py 不正确?有人对正在发生的事情有任何指示吗?

更新我原来的帖子,添加#include windows.h,原来的“HANDLE”错误现在消失了,但我现在收到了这个链接错误:

(base) d:\epix\cython>python setup.py build_ext --inplace --compiler=msvc
running build_ext
building 'test' extension
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe 
/c /nologo /Ox /W3 /GL /DNDEBUG /MD -IC:\Anaconda3\include -ID:\epix\lib - 
ID:\epix\inc -IC:\Anaconda3\include -IC:\Anaconda3\include "-IC:\Program 
Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files 
(x86)\Microsoft Visual Studio 14.0\VC\ATLMFC\INCLUDE" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\ucrt" "-IC:\Program Files 
(x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\shared" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\um" "-IC:\Program Files 
(x86)\Windows Kits\10\include\10.0.10586.0\winrt" /Tctest.c 
/Fobuild\temp.win-amd64-3.6\Release\test.obj
test.c
C:\Program Files (x86)\Microsoft Visual Studio 
14.0\VC\BIN\x86_amd64\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL 
/MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:C:\Anaconda3\Lib 
/LIBPATH:D:\epix\inc\XCLIBW64.lib /LIBPATH:D:\epix\lib\PXIPLW64.lib 
/LIBPATH:C:\Anaconda3\libs /LIBPATH:C:\Anaconda3\PCbuild\amd64 
"/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\LIB\amd64" 
"/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio 
14.0\VC\ATLMFC\LIB\amd64" "/LIBPATH:C:\Program Files (x86)\Windows 
Kits\10\lib\10.0.10586.0\ucrt\x64" "/LIBPATH:C:\Program Files (x86)\Windows 
Kits\NETFXSDK\4.6.1\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows 
Kits\10\lib\10.0.10586.0\um\x64" /EXPORT:PyInit_test build\temp.win-amd64- 
3.6\Release\test.obj /OUT:d:\epix\cython\test.cp36-win_amd64.pyd 
/IMPLIB:build\temp.win-amd64-3.6\Release\test.cp36-win_amd64.lib
test.obj : warning LNK4197: export 'PyInit_test' specified multiple times; 
using first specification
Creating library build\temp.win-amd64-3.6\Release\test.cp36-win_amd64.lib 
and object build\temp.win-amd64-3.6\Release\test.cp36-win_amd64.exp
test.obj : error LNK2001: unresolved external symbol pxd_PIXCIclose
d:\epix\cython\test.cp36-win_amd64.pyd : fatal error LNK1120: 1 unresolved 
externals error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 
14.0\\VC\\BIN\\x86_amd64\\link.exe' failed with exit status 1120

有解决此错误的建议吗?谢谢。

【问题讨论】:

HANDLE 的存在让我觉得你的某些东西包括在使用 Windows 标头。它可能只是通过stdafx.h 样式的预编译头设置间接地这样做。在这种情况下,我认为您需要在标题中明确包含该 stdafx.h。 我是将它添加到 setup.py include_dirs 还是将#include 添加到标题中? 我认为您可能必须将其添加到您的标题中,但我实际上并不确定,而且很遗憾,我没有要测试的 Windows 框。 这可能不是你的全部问题,但是:test.pxdtest.pyx 直接test.pxds 命名空间自动导入。因此,您最终可能会得到多个名为 pxd_PIXCIclose() 的函数(至少从 Cython 的角度来看)。重命名 Cython 函数或 pxd 文件。 嗨 DavidW - 我更改了 pxd 名称,但仍然收到相同的错误。谢谢你的理解。 【参考方案1】:

根据编译器输出,未定义 HANDLE。您知道吗,使用 VS2015 您需要添加 SDK 路径?如我所见,它不包括在内。将 C:\Program Files (x86)\Windows Kits\10\include\platformtoolset\um 添加到路径。 Platformtoolset 将在您的包含路径中定义子文件夹。希望对您有所帮助。

【讨论】:

@sllwine 请看上面 嗨 Valeca,我的系统变量确实将“路径”设置为“C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\”,正如您在我的原始帖子中看到的那样,文件夹 um 包括在内,'"-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10586.0\um"'。谢谢你的建议。 通过将#include 添加到我的头文件中,我能够编译而不会出现原始的“HANDLE”错误。这个洋葱的下一层,我收到以下致命链接错误:d:\cython\test.cp36-win_amd64.pyd : fatal error LNK1120: 1 unresolved externals error: command 'C:\\Program Files (x86) \\Microsoft Visual Studio 14.0\\VC\\BIN\\x86_amd64\\link.exe' 失败,退出状态为 1120。现在我猜我的 setup.py 不包括所需的 .lib 文件,是 'library_dir'不是包含 .lib 的正确方法?谢谢。 @sallwine LNK2001:无法解析的外部符号 pxd_PIXCIclose 表示找不到 pxd_PIXCIclose。虽然这可能很简单,因为添加新的 /LIBPATH 以指向该名称所在的库的位置,但由于几个原因,它也可能很复杂。请看这里:msdn.microsoft.com/en-us/library/f6xx1b1z.aspx 如果您知道库名称,也可以尝试在代码中添加#pragma comment(lib, "library name you need.lib") 指令。【参考方案2】:

通过将#include windows.h 添加到我的标题中,然后将我原来的 setup.py 更改为以下内容:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Build import cythonize


ext_modules = Extension(
          name = "test",
          sources=["test.pyx"],

          include_dirs=["D:\epix\lib", "D:\epix\inc"],
          library_dirs=["D:\epix\inc"],
          libraries=["XCLIBW64", "PXIPLW64"]

          )

setup(
name = "test.pyx",
ext_modules = cythonize([ext_modules])

我能够成功地对我的 c 项目中的一个函数进行 cythonize。感谢所有给我建议的人,这些建议为我指明了正确的方向。

【讨论】:

tensorflow-gpu在windows10上的安装(anaconda)

文档来源转载:http://blog.csdn.net/u010099080/article/details/53418159http://blog.nitishmutha.com/tensorflow/2017/01/22/TensorFlow-with-gpu-for-windows.html安装前准备TensorFlow有两个版本:CPU 版本和 GPU 版本。 查看详情

无法在 Windows 10 上的 python 3.6 64 位上运行 pyqt5(没有 anaconda 没有 virtualenv)

】无法在Windows10上的python3.664位上运行pyqt5(没有anaconda没有virtualenv)【英文标题】:Couldn\'trunpyqt5onpython3.664bitsonWindows10(Noanacondanovirtualenv)【发布时间】:2018-08-0218:57:35【问题描述】:由于与此问题相关的其他线程上的建议答案... 查看详情

Windows 10 上的 Snowboy 模块安装错误

...了互联网,但没有找到解决方案。我的想法:Pycharm2020与anaconda我的操作系统:Windows10x64代码:(kurs)C: 查看详情

写。 Anaconda Python 3.4 和 Cython

】写。AnacondaPython3.4和Cython【英文标题】:Wrt.AnacondaPython3.4andCython【发布时间】:2014-10-0100:24:39【问题描述】:很抱歉刚接触Anaconda(和Cython)。我使用的是Anaconda64位Python3.4Windows。Anaconda在哪里为Cython进行所有这些设置?我有一... 查看详情

在 Windows 平台上的 Anaconda 中从 Python 替换 Perl

】在Windows平台上的Anaconda中从Python替换Perl【英文标题】:PerlsubstitutionfromPythoninAnacondaonWindowsplatform【发布时间】:2021-11-1001:48:27【问题描述】:在Windows上安装perl、m2-base和其他一些软件包的Anacondashell环境中:$echo"/">junk$morejunk"... 查看详情

windows10安装anaconda(代码片段)

一直在Ubuntu中使用pytorch,现在切换到Windows系统,使用anaconda搭建环境。1、从https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载安装文件:Anaconda3-5.3.1-Windows-x86_64.exe,双击安装。2、更新包管理镜像源:  condaconfig--addchannelshttps://m 查看详情

如何在 Windows 上的 Anaconda Python 中安装 Keras 和 Theano?

】如何在Windows上的AnacondaPython中安装Keras和Theano?【英文标题】:HowdoIinstallKerasandTheanoinAnacondaPythononWindows?【发布时间】:2016-03-0922:55:47【问题描述】:我正在尝试使用以下Keras包在Python中处理神经网络:fromkeras.utilsimportnp_utilsfrom... 查看详情

Anaconda-Spyder 在 Windows 10 中无法运行

】Anaconda-Spyder在Windows10中无法运行【英文标题】:Anaconda-SpyderisnotworkinginWindows10【发布时间】:2021-02-2412:00:16【问题描述】:我安装了anaconda,但之后,当我单击导航器符号时,它无法启动anaconda。我试着点击spyder但它也没有工作... 查看详情

Anaconda Navigator 启动后崩溃,Windows 10

】AnacondaNavigator启动后崩溃,Windows10【英文标题】:AnacondaNavigatorcrashingafterlaunch,Windows10【发布时间】:2018-02-0600:20:51【问题描述】:AnacondaNavigator在从AnacondaNavigator启动JupyterNotebook并安装pandas-datareader“condainstall-cconda-forgepan 查看详情

无法在 Windows 10 版本中安装 keras 或 tensorflow - Anaconda

】无法在Windows10版本中安装keras或tensorflow-Anaconda【英文标题】:Can\'tinstallkerasortensorflowinWindows10version-Anaconda【发布时间】:2021-03-1320:03:04【问题描述】:我刚刚将Windows10重置为出厂设置。我已重新安装Anaconda/Spyder,但目前在安装... 查看详情

windows10下tensorflow安装记录

1.安装anaconda安装最新版:https://repo.anaconda.com/archive/Anaconda3-5.3.0-Windows-x86_64.exe加入环境变量:path加anaconda安装目录path加anaconda安装目录/scripts  查看详情

windows10+anaconda3+tensorflow(gpu)

2017.6.2安装时间先装anaconda3或者在anaconda2下win+rcmd控制器condacreate-nAnaconda3python=3.5(上一步会在里面出现文件我剪切到别的地方了)在Anaconda2/envs中安装Anaconda3版本的 会提示已经存在我是删了重新在envs下直接安装Anaconda3注意要... 查看详情

windows10下的openvinopycharm+anaconda开发环境配置(代码片段)

配置环境Windows10Anaconda2.0.4Pycharm2021.1Python环境3.6.13OpenVINO工具包2020.2OpenVINO安装:https://blog.csdn.net/qq_44989881/article/details/119296663使用Anaconda操作,切换到要使用OpenVINO的Python环境也可以通过打开Ana 查看详情

windows10中更新anaconda和第三方包(代码片段)

 ===============================作为专业的Python开发者,Anaconda包肯定很熟悉下面总结一下Anaconda的升级和维护 步骤一: 打开cmd,切换到Anaconda的Scripts目录下:./Anaconda3/Scripts步骤二: 更新Anaconda,命令如下: condaupdat... 查看详情

windows10中anaconda配合pycham使用(代码片段)

...天一直被python的工作环境困扰,通过查找资料终于解决了Anaconda的虚拟工作空间的问题,记下来备忘这里主要讲Anaconda的虚拟工作空间的操作1.安装Anaconda与PychamAnaconda与Pycham安装过程可以网上搜索教程 2.管理condaWindows下打开cmd... 查看详情

windows10安装anaconda2

...要,要在同一台电脑上安装python2.7的版本,遂考虑到安装Anaconda2来实现,这样可以做到2.x和3.x之间不冲突。刚开始下载的为官网上的最新版,即Anaconda5.3,按照正常的安装步骤安装之后,在开始菜单处运行AnacondaNavigator,出现了... 查看详情

错误 - 在 windows 10/8.1 机器中通过 anaconda 使用 python pyspark

】错误-在windows10/8.1机器中通过anaconda使用pythonpyspark【英文标题】:Error-pysparkwithpythonviaanacondainwindows10/8.1machine【发布时间】:2017-07-3006:11:58【问题描述】:Windows10或8机器无法识别Pyspark。我读过一些***帖子,例如Pysparkinstall、Unab... 查看详情

windows10下anaconda和pycharm的安装配置与激活

 一、Anaconda的下载安装      1.1 Anaconda介绍  Anaconda是一个基于Python的数据处理和科学计算平台,内置了许多非常有用的第三方库,装上Anaconda,就相当于把Python和一些如Numpy、Pandas、Scrip、Matplo... 查看详情