Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
生成Python扩展失败(“kernel32.lib”无法打开,“x64”与目标计算机类型“x86”冲突)_Python_Visual Studio_Pip_Compilation_Python Extensions - Fatal编程技术网

生成Python扩展失败(“kernel32.lib”无法打开,“x64”与目标计算机类型“x86”冲突)

生成Python扩展失败(“kernel32.lib”无法打开,“x64”与目标计算机类型“x86”冲突),python,visual-studio,pip,compilation,python-extensions,Python,Visual Studio,Pip,Compilation,Python Extensions,我试图通过pip在新安装的Anaconda3上安装python扩展line profiler。由于该软件包需要编译器,我已经安装了VisualStudioBuildTools 2019以及Windows10SDK。特别是,我安装了 MSVC v142–VS 2019 C++-x64/x86构建工具(v14.27) Windows 10 SDK(10.0.18362.0) MSVC v141–VS 2017 C++-x64/x86构建工具(v14…) MSVC v140–VS 2015 C++构

我试图通过pip在新安装的Anaconda3上安装python扩展
line profiler
。由于该软件包需要编译器,我已经安装了VisualStudioBuildTools 2019以及Windows10SDK。特别是,我安装了

  • MSVC v142–VS 2019 C++-x64/x86构建工具(v14.27)
  • Windows 10 SDK(10.0.18362.0)
  • MSVC v141–VS 2017 C++-x64/x86构建工具(v14…)
  • MSVC v140–VS 2015 C++构建工具(v14.00)
我正在使用64位Windows 10,构建18363.1082

为了确保找到所需的所有编译器文件,我向PATH环境变量添加了以下条目:

  • C:\ProgramFiles(x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64
  • C:\ProgramFiles(x86)\Windows工具包\10\bin\10.0.18362.0\x64
  • C:\ProgramFiles(x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin\Hostx64\x64
现在当我跑的时候

pip install line-profiler
我收到了错误信息

fatal error LNK1104: file "kernel32.lib" cannot be opened
即使文件
kernel32.lib
显然存在于上面添加到路径的一个文件夹中。(此问题末尾的完整错误日志)

经过一些研究,我发现在VS2019的开发者命令提示符下操作有助于解决这个问题,因为它会在启动时加载一些批处理文件。因此,我打开了这个命令提示符,激活了我的Anaconda环境,并再次运行相同的命令。现在我得到了错误

fatal error LNK1112: machine type "x64" is in confilict with the target machine type "x86".
如何设置VS以正确编译扩展?特别是,我想知道

  • 如何设置anaconda提示符(或任何其他提示符),以便始终找到正确的
    kernel32.lib
  • 如何帮助创建扩展的x64版本(显然我正在使用x64)
  • 完整的错误信息如下(必要时可从德语自由翻译)


    问题在于并非所有环境变量都设置正确。要执行此操作,可以/需要执行文件
    C:\ProgramFiles(x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat
    。这(几乎)是在启动Develper命令提示符时完成的,这解释了为什么在这个控制台中可以找到kernel32.lib


    出现第二个错误,因为Develper命令提示符不执行x64版本的脚本,因此将变量设置为x86编译器的路径。使用“VS 2019的x64本机工具命令提示符”(可在“开始”菜单中找到)解决了此问题。

    @ead您在哪里看到此问题?我已经安装了64位版本的Anaconda。为了再次检查,我测试了
    sys.version
    ,它返回了
    3.8.3(默认值,2020年7月2日,17:30:36)[MSC v.1916 64位(AMD64)]
    。很抱歉,我搞错了,您使用的是x86的构建工具,但x64 python只有一个版本的vs构建工具。它同时带有x86和x64工具。正如您在我的问题中所看到的,我已经将x64工具添加到路径中
    ERROR: Command errored out with exit status 1:
       command: 'C:\Users\user\Anaconda3\python.exe' 'C:\Users\user\Anaconda3\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\user\AppData\Local\Temp\tmpvbz5hf82'
           cwd: C:\Users\user\AppData\Local\Temp\pip-install-vluz_z60\line-profiler
      Complete output (217 lines):
      Not searching for unused variables given on the command line.
      -- The C compiler identification is MSVC 19.27.29112.0
      -- Detecting C compiler ABI info
      -- Detecting C compiler ABI info - failed
      -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe
      -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe - broken
      CMake Error at C:/Users/user/AppData/Local/Temp/pip-build-env-bxchh6aq/overlay/Lib/site-packages/cmake/data/share/cmake-3.18/Modules/CMakeTestCCompiler.cmake:66 (message):
        The C compiler
    
          "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.27.29110/bin/Hostx64/x64/cl.exe"
    
        is not able to compile a simple test program.
    
        It fails with the following output:
    
          Change Dir: C:/Users/user/AppData/Local/Temp/pip-install-vluz_z60/line-profiler/_cmake_test_compile/build/CMakeFiles/CMakeTmp
    
          Run Build Command(s):C:/Users/user/AppData/Local/Temp/pip-build-env-bxchh6aq/overlay/Scripts/ninja.exe cmTC_9b999 && [1/2] Building C object CMakeFiles\cmTC_9b999.dir\testCCompiler.c.obj
          [2/2] Linking C executable cmTC_9b999.exe
          FAILED: cmTC_9b999.exe
          cmd.exe /C "cd . && C:\Users\user\AppData\Local\Temp\pip-build-env-bxchh6aq\overlay\Lib\site-packages\cmake\data\bin\cmake.exe -E vs_link_exe --intdir=CMakeFiles\cmTC_9b999.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x64\mt.exe --manifests  -- C:\PROGRA~2\MICROS~3\2019\BUILDT~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_9b999.dir\testCCompiler.c.obj  /out:cmTC_9b999.exe /implib:cmTC_9b999.lib /pdb:cmTC_9b999.pdb /version:0.0 /machine:x64  /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
          LINK Pass 1: command "C:\PROGRA~2\MICROS~3\2019\BUILDT~1\VC\Tools\MSVC\1427~1.291\bin\Hostx64\x64\link.exe /nologo CMakeFiles\cmTC_9b999.dir\testCCompiler.c.obj /out:cmTC_9b999.exe /implib:cmTC_9b999.lib /pdb:cmTC_9b999.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:CMakeFiles\cmTC_9b999.dir/intermediate.manifest CMakeFiles\cmTC_9b999.dir/manifest.res" failed (exit code 1104) with the following output:
          LINK : fatal error LNK1104: Datei "kernel32.lib" kann nicht geöffnet werden.
          ninja: build stopped: subcommand failed.
    
    FAILED: line_profiler/_line_profiler.cp38-win_amd64.pyd
      cmd.exe /C "cd . && C:\Users\user\AppData\Local\Temp\pip-build-env-mf957mv5\overlay\Lib\site-packages\cmake\data\bin\cmake.exe -E vs_link_dll --intdir=line_profiler\CMakeFiles\_line_profiler.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100183~1.0\x86\mt.exe --manifests  -- C:\PROGRA~2\MICROS~3\2019\BUILDT~1\VC\Tools\MSVC\1427~1.291\bin\Hostx86\x86\link.exe /nologo line_profiler\CMakeFiles\_line_profiler.dir\_line_profiler.c.obj line_profiler\CMakeFiles\_line_profiler.dir\unset_trace.c.obj line_profiler\CMakeFiles\_line_profiler.dir\timers.c.obj  /out:line_profiler\_line_profiler.cp38-win_amd64.pyd /implib:line_profiler\_line_profiler.lib /pdb:line_profiler\_line_profiler.pdb /dll /version:0.0 /machine:X86 /INCREMENTAL:NO /EXPORT:PyInit__line_profiler  C:\Users\user\Anaconda3\libs\python38.lib  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib  && cd ."
      LINK: command "C:\PROGRA~2\MICROS~3\2019\BUILDT~1\VC\Tools\MSVC\1427~1.291\bin\Hostx86\x86\link.exe /nologo line_profiler\CMakeFiles\_line_profiler.dir\_line_profiler.c.obj line_profiler\CMakeFiles\_line_profiler.dir\unset_trace.c.obj line_profiler\CMakeFiles\_line_profiler.dir\timers.c.obj /out:line_profiler\_line_profiler.cp38-win_amd64.pyd /implib:line_profiler\_line_profiler.lib /pdb:line_profiler\_line_profiler.pdb /dll /version:0.0 /machine:X86 /INCREMENTAL:NO /EXPORT:PyInit__line_profiler C:\Users\user\Anaconda3\libs\python38.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:line_profiler\_line_profiler.cp38-win_amd64.pyd.manifest" failed (exit code 1112) with the following output:
      python38.lib(python38.dll) : fatal error LNK1112: Modul-Computertyp "x64" steht in Konflikt mit dem Zielcomputertyp "x86".
      ninja: build stopped: subcommand failed.