如何在Windows 10上安装cython Anaconda 64位?

时间:2018-10-17 22:42:59

标签: python windows-10 anaconda cython

全部在标题中,有人可以逐步安装cython并在Windows 10的Anaconda 64位上运行它吗? 我搜索了4个小时,并且有很多教程...对于我在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,使用Windows SDK的所有方法(尤其是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

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

请帮助。

一个绝望的学生

3 个答案:

答案 0 :(得分:3)

好吧,我在Windows 10上使用蟒蛇3.6.5和MSC v.1900 64位解决了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(不仅仅是Mingw仅支持32位)并安装

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-toolchain 它来自这些网页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上进行的第一项或第二项测试都对我有利,

希望这会有所帮助!

答案 1 :(得分:0)

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

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

**具有Linux或Apple MacOSX经验的人可能会选择GCC(MinGW)作为Windows上的C / C ++编译器。请注意,GCC不是Windows上的平台C编译器。要与Windows上的大多数库和应用程序二进制兼容,请使用Microsoft的编译器。这与选择GCC作为Linux上的首选编译器没有什么不同。 Microsoft的Windows C / C ++平台编译器是免费的。

**对于C ++,请注意GCC(Mingw)和MSVC使用不同的C ++运行时。如果在扩展中使用C ++,则C ++运行时还必须与Python的C运行时兼容。因此,即使在32位x86上,也始终使用Microsoft的C ++编译器。这对于像Windows这样普遍使用C ++的平台(参见COM和ActiveX)非常重要。如果将GCC用作C ++编译器,则扩展名将与其他C ++库或COM二进制兼容,也不与Python的C运行时兼容,并且GCC和MSVC之间的异常处理差异可能会导致应用程序崩溃。

答案 2 :(得分:0)

虽然不是Windows 10的答案,但Windows 7是。我想告诉我我是怎么做到的。

  1. 我从Anaconda开始使用(对于Windows Installer使用Anaconda 2019.10-Python 3.7版本64位)。它是使用Microsoft编译器而不是MinGW构建的(在python sys.version报告中:MSC v.1915 64位(AMD64)。Anaconda随Cython一起安装,但不随MSC编译器一起安装。 因此,尝试在Jupyter中使用cython示例:
    %load_ext Cython

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

现在这会引发错误:Unable to find vcvarsall.bat

  1. 具有Python 3.7的Cython需要Visual C ++ 2015(14.0)。我无法再从Microsoft下载此版本,所以我下载了Visual Studio安装程序:Visual Build Tools2019。在安装程序中,我在“工作量”中选择了C ++生成工具。然后在右侧

联合国已选择:

  • MSVC v142-VS 2019 C ++ x64 / x86构建工具
  • 用于Windows的C ++ CMake工具
  • C ++ AddressSanititizer(实验性)

我选择了:

  • Windows 10 SDK
  • 测试工具的核心功能-构建工具
  • 对v142构建工具的C ++ / CLI支持
  • MSVC V140-VS 2015 C ++构建工具

安装此程序并再次运行以上示例后,我遇到了链接器错误: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示例起作用! 我还没有尝试过其他任何方法,但是我确实希望这是需要做的所有事情。 希望这对某人有帮助。