如何在Windows 10上使用Anaconda 64位安装Cython?

2024-09-20 03:47:43 发布

您现在位置:Python中文网/ 问答频道 /正文

这都在标题里,有没有人有一个循序渐进的方法来安装cython并在Windows 10上的64位Anaconda上运行它? 我找了几个小时,有很多教程。。。因为我在windows 10上做不到的事情。 我试着遵循所有这些方法和更多,但目前是徒劳的: https://www.ibm.com/developerworks/community/blogs/jfp/entry/Installing_Cython_On_Anaconda_On_Windows?lang=en

https://github.com/cython/cython/wiki/CythonExtensionsOnWindows

Conda安装已经完成,但问题是要将编译器链接到python,所有使用WindowsSDK的方法,特别是SDK命令提示符都已经过时,此提示在Visual studio 2015上不存在,setenv函数也不再存在,因此无法执行“setenv\x64\release”,如果没有此步骤,代码将无法工作。

带MinGW的另一个方法返回错误:

C:\MinGW\bin\gcc.exe -shared -s build\temp.win-amd64-3.6\Release\hello.o build\temp.win-amd64-3.6\Release\hello.cp36-win_amd64.def -LC:\Users\Utilisateur\Anaconda3\libs -LC:\Users\Utilisateur\Anaconda3\PCbuild\amd64 -lpython36 -lmsvcr140 -o C:\Users\Utilisateur\Documents\hello.cp36-win_amd64.pyd
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lmsvcr140
collect2.exe: erreur : ld a retourné 1 code d'état d'exécution
error: command 'C:\\MinGW\\bin\\gcc.exe' failed with exit status 1

所以我不知道下一步该怎么办。

请帮忙。

绝望的学生


Tags: 方法httpscomhellobinwindowsanacondaexe
3条回答

虽然不是windows 10的答案,而是windows 7。我想告诉你我是怎么做到的。

  1. 我从Anaconda开始(使用:Anaconda 2019.10 for Windows Installer-Python 3.7版本64位)。它是用微软编译器而不是MinGW(在python sys.version reports:MSC v.1915 64位(AMD64)中)构建的。Anaconda安装了Cython,但没有MSC编译器。 所以在《朱庇特》中尝试cython的例子:
    %load_ext Cython

    %%cython
    cdef int a = 0
    for i in range(10):
        a += i
    print(a)

这将引发一个错误:Unable to find vcvarsall.bat

    带Python 3.7的Cython需要Visual C++ 2015(14)。我无法再从microsoft下载此版本,所以我下载了visual studio安装程序:visual Build Tools 2019。在安装程序中,我选择了“工作负载”C++的构建工具。然后在右手边

I取消选择:

  • MSVC V142VS 2019 C++ X64/x86构建工具< /LI>< L> > C++工具制作Windows
  • 工具
  • C++地址消毒器(实验)

我选择了:

  • Windows 10 SDK
  • 测试工具核心特性-构建工具
  • v142构建工具的LI> C++/CLI支持
  • MSVC V140- vs 2015 C++构建工具< /LI>

在安装这个并再次运行上面的示例之后,我遇到了一个链接器错误:LINK : fatal error LNK1158

3)在目录的某个子目录中 C:\Program files (x86)\Windows Kits 我找到了文件:rc.exercdll.dll
我把它们复制到MSVC的bin目录中: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

这使得链接器错误消失,cython示例工作! 我还没有试过其他的,但我希望这是所有需要做的。 希望这能帮助别人。

好的,我用python 3.6.5和MSC v.1900 64位在Windows 10上用Anaconda解决了这个问题(通过运行:

import sys
sys.version

下面是方法:

1:在Anaconda提示符下运行conda install -c anaconda cython安装cython

2:进入C:\Users\Utilisateur\Anaconda3\Lib\distutils或distutils库所在的位置(使用记事本)创建distutils.cfg文件并

[build]           
compiler=mingw32 

在里面

3:在https://sourceforge.net/projects/mingw-w64/files/处获取最新版本的Mingw-w64(不只是支持32位的Mingw),然后安装它

4:在路径中添加C:\Program Files (x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin这里有一个关于如何在windows 10上执行此操作的链接:https://www.architectryan.com/2018/03/17/add-to-the-path-on-windows-10/

5:通过运行conda install -c anaconda libpythonconda install -c msys2 m2w64-toolchain,在anaconda环境中安装libpython和m2w64工具链 它来自这些网页https://python-at-risoe.pages.windenergy.dtu.dk/compiling-on-windows/common_errors.html,应该更正相应的错误

6:在这个页面上尝试第一个或第二个测试http://docs.cython.org/en/latest/src/quickstart/build.html在步骤5之后,这两个测试都对我有效

希望能有帮助!

您确定使用MinGW-w64可以吗?在Cython Wiki中,他们说不建议:

**请勿使用MinGW-w64。正如您将注意到的,用于Python的MinGW导入库(例如libpython27.a)在AMD64版本的Python中被省略了。这是故意的。不要试图使用dlltool制作。目前还没有正式的MinGW-w64版本,它仍然处于“测试版”中,被认为是不稳定的,尽管您可以从TDM-GCC获得64位版本。mingw运行时也存在与MSVC运行时冲突的问题;这可能发生在您不期望的地方,例如g++或gfortran的运行库内部。为了安全起见,暂时避免使用MinGW-w64。

<> **有经验的Linux或苹果MaCOSX可能选择GCC(MINW)作为他们在Windows上选择的C/C++编译器。注意,GCC不是Windows上的platform C编译器。要与Windows上的大多数库和应用程序保持二进制兼容,请使用Microsoft的编译器。这与在Linux上选择GCC作为编译器没有区别。微软的Windows平台C/C++编译器是免费的。

对于C++,观察GCC(MIWW)和MSVC使用不同的C++运行时。如果在扩展中使用C++,C++运行时还必须与Python的C运行时兼容。为此,总是使用微软的C++编译器,甚至在32位x86上。在Windows这样的平台上,这是非常重要的,其中C++是普遍存在的(参见COM和ActiveX)。如果使用GCC作为C++编译器,则扩展不会与其他C++库或COM二进制兼容,不兼容Python的C运行时,而GCC和MSVC之间异常处理的差异会使应用程序崩溃。

相关问题 更多 >