gpt4 book ai didi

python - 使用pip安装时编译出错

转载 作者:行者123 更新时间:2023-11-28 17:43:34 25 4
gpt4 key购买 nike

我在使用 pip 安装包时遇到问题。我在 Windows 8.1 64 位的 Pyzo(预打包了 numpy、scipy 等)中运行 python 3.3。当我尝试使用需要编译一些 c 的 pip 安装包时,它失败了。

起初我收到错误“无法找到 vcvarsall.bat”。我查了一下,它似乎试图找到用于构建我正在运行的 python 版本的编译器。
error: Unable to find vcvarsall.bat
pip install gives error: Unable to find vcvarsall.bat
Unable to find VCVarsall.bat using Python 2.7
error: Unable to find vcvarsall.bat to compile python modules with Visual Studio 2008 installed

我正在为我的普通 .Net 东西运行 Visual Studio 2013,但显然 python 3.3 是用 Visual Studio 2010 编译的。所以,我安装了 Visual C++ 2010 Express,但它仍然给出了同样的错误。

我设法找到了用于查找 vcvarsall 的源代码(Lib/distutils 中的 msvc9compiler.py)。所以我开始四处查看源代码,发现它寻找的版本是 9.0(即 Visual 2008)。所以我下载了 2008 C++ Express 并再次尝试。这次它找到了 vcvarsall.bat 但我得到了一个不同的错误“ValueError:['path']”报错的方法如下(打印出来是我调试用的)

def query_vcvarsall(version, arch="x86"):
"""Launch vcvarsall.bat and read the settings from its environment
"""
vcvarsall = find_vcvarsall(version)
print(version)
print(arch)
print(vcvarsall)
interesting = set(("include", "lib", "libpath", "path"))
result = {}

if vcvarsall is None:
raise DistutilsPlatformError("Unable to find vcvarsall.bat")
log.debug("Calling 'vcvarsall.bat %s' (version=%s)", arch, version)
popen = subprocess.Popen('"%s" %s & set' % (vcvarsall, arch),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
try:
stdout, stderr = popen.communicate()
if popen.wait() != 0:
raise DistutilsPlatformError(stderr.decode("mbcs"))

stdout = stdout.decode("mbcs")
for line in stdout.split("\n"):
print(line)
line = Reg.convert_mbcs(line)
if '=' not in line:
continue
line = line.strip()
key, value = line.split('=', 1)
key = key.lower()
if key in interesting:
if value.endswith(os.pathsep):
value = value[:-1]
result[key] = removeDuplicates(value)

finally:
popen.stdout.close()
popen.stderr.close()

if len(result) != len(interesting):
print(str(result)+"::: "+str(interesting))
raise ValueError(str(list(result.keys())))

return result

所以基本上,发生的事情是它检查我的环境变量并查找有趣的条目(“include”、“lib”、“libpath”、“path”)现在,我拥有的唯一一个是“路径”,所以最后的 if 语句抛出 ValueError。所以,我想知道其他的是什么,为什么我没有它们,它为什么要寻找它们,我该如何解决?

感谢所有的回答。

问候
弗雷德里克

最佳答案

问题是 Visual C++ Express 2010 不包含 64 位编译器。参见 How to compile a 64-bit application using Visual C++ 2010 Express .

关于python - 使用pip安装时编译出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com