错误安装 调用 java_使用pip安装时出错时编译错误

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

我正在为我的普通.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

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

感谢所有答案 .

问候

弗雷德里克

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值