【问题标题】:Visual Studio c++ build tools: VsDevCmd.bat / vcvarsall.bat fails to find some [unknown] paths and thus to runVisual Studio c++ 构建工具:VsDevCmd.bat / vcvarsall.bat 无法找到一些 [未知] 路径,因此无法运行
【发布时间】:2021-01-22 16:42:06
【问题描述】:

我在设置 2017 VC++ 构建工具时遇到问题,无论是作为独立版还是随 VS 社区版一起安装。

具体来说,一切似乎都安装好了,但是对 vcvarsall.bat 的调用不起作用 - python distutils 抱怨:

ImportError: Building module some_module_name failed: ['distutils.errors.DistutilsPlatformError: Error executing cmd /u /c "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Auxiliary\\Build\\vcvarsall.bat" x86_amd64 && set\n']
Process finished with exit code 1

从 cmd 运行 vcvarsall.bat 时:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build>vcvarsall.bat x64
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
[vcvarsall.bat] Environment initialized for: 'x64'

("Das System kann den angegebenen Pfad nicht finden." 是德语的“系统找不到提供的路径”)

VsDevCmd.bat 类似:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools>VsDevCmd.bat
Das System kann den angegebenen Pfad nicht finden.
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.27
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.
Das System kann den angegebenen Pfad nicht finden.

我无法让它至少报告找不到哪个路径... 任何想法如何解决这个问题?

尝试了多次重新安装,也尝试了不同版本(2019 - 相同,独立的 2017 构建工具等)

编辑:我得到了@HansPassant 建议的完整诊断输出;太长了,无法完整粘贴到这里。

注意:错误总是出现在for /F ...之后
我发现错误之前以明文列出的所有目录。
唯一的例外是FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden. 处的 reg 键(“错误:未找到 reg 键或值”),它似乎确实不存在。

>set __VSCMD_VER=

>for /F "tokens=1,2,* delims==+" %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.isolation.ini"') do (
if "3" GEQ "3"
 if /I "%A" == "SemanticVersion" (
if "3" GEQ "1"
 set "__VSCMD_VER=%B"
)
)
**Das System kann den angegebenen Pfad nicht finden.**


[...]

>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" /v "InstallationFolder"') DO (if "%i" == "InstallationFolder" (SET WindowsSdkDir=%~k ) )
Das System kann den angegebenen Pfad nicht finden.

[...]

 if EXIST "C:\Program Files (x86)\Windows Kits\10\include\%i\um\winsdkver.h" (
set result=%i
 if "!result:~0,3!" == "10." (
set SDK=!result!
 if "!result!" == "" set findSDK=1
)
)
)
Das System kann den angegebenen Pfad nicht finden.

[...]

>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows Kits\Installed Roots" /v "KitsRoot10"') DO (if "%i" == "KitsRoot10" (SET UniversalCRTSdkDir=%k ) )
Das System kann den angegebenen Pfad nicht finden.

[...]


>for /F %i IN ('dir "C:\Program Files (x86)\Windows Kits\10\include\" /b /ad-h /on') DO (
set result=%i
 if "!result:~0,3!" == "10." set CRT=!result!
 if "!result!" == "" set match=1
)
Das System kann den angegebenen Pfad nicht finden.

[...]

>for /F %a in ('dir "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\vsdevcmd\ext\*.bat" /b /a-d-h /on') do (call :call_script_helper ext\%a )
Das System kann den angegebenen Pfad nicht finden.

[...]


>for /F "tokens=1,2*" %i in ('reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\VSPerf" /v "CollectionToolsDir"') DO (if "%i" == "CollectionToolsDir" (SET "__collection_tools=%k" ) )
Das System kann den angegebenen Pfad nicht finden.
FEHLER: Der angegebene Registrierungsschlüssel bzw. Wert wurde nicht gefunden.

[...]

>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt"') do (set "__VCVARS_TOOLS_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.

[...]

>for /F %A in ('type "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\Microsoft.VCRedistVersion.default.txt"') do (set "__VCVARS_REDIST_VERSION=%A" )
Das System kann den angegebenen Pfad nicht finden.


【问题讨论】:

  • set vscmd_debug=3 以获得更多诊断输出。
  • @HansPassant 感谢您的建议,我做到了 - 在结果中进行了编辑。
  • 您是否尝试过链接中的解决方案?
  • @magicandre1981 我现在有:确实有一个条目可能源于一个旧的、长期卸载的 anaconda 安装,它似乎把事情搞砸了。现在一切似乎都正常了,所以非常感谢。也许您可以发布一个非常简短的答案? (这也将让我奖励赏金)。

标签: windows visual-studio visual-studio-2017 visual-studio-2017-build-tools


【解决方案1】:

这个接缝是过去几个月的common issue,并且有一个fix posted by Steven2105

  • 打开Registry Editor(Windows 键并在提示中输入regedit
  • 转到HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun 并清除这些值。
  • 如果HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun中存在,也将其删除。

所以运行regedit.exe并删除提到的值来修复cmd。

【讨论】:

  • 那里确实有一个条目,似乎是被卸载的 anaconda 安装留下的,这似乎把事情搞砸了。谢谢!
  • 好的,所以这看起来像是 anaconda 问题,所以请在他们的支持上提出问题。另一个主题的用户也使用了 anaconda,所以这是你们俩的共同点。
猜你喜欢
  • 2021-12-23
  • 2015-09-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
相关资源
最近更新 更多