作者KagiJhou (Kagi)
看板Python
标题[问题]用Visual Studio编译时产生的ValueError
时间Thu Jun 27 10:14:08 2013
各位好,新人发问,冒犯之处请见谅。
我最近正再研究如何以python启动JVM并执行.class档,而我所找到的解法是
Pyjnius(
http://pyjnius.readthedocs.org/en/latest/),於是我便开始安装。
在他的文件中有提到,需要先安装JDK以及Cython。JDK使用的是JDK7u5。
但是在安装Cython时出现了问题。
首先是无法安装。安装时出现了Unable to find vcvarsall.bat。
我自己拜google的结果提到了两种解法:安装 MinGW 与安装 VS 2008 Express。
MinGW已确认是最新版,而2008的官方连结已被移除,所以我装了2012。
但是问题仍没有解决。
後来我在这位的blog找到了原因与解法:
http://blog.csdn.net/xueyunf/article/details/8924312
"它是在注册表中寻找到 vs 的目录,再去在 vs 目录下找 vcvarsall.bat。
但是问题就出在 python 里面默认是 vc9.0 也就是 vs2008
所以它在注册表里面找不到键值"
於是我开始着手修改 msvc9compiler.py (C:/Python32/Lib/distutils 目录下)
将原本的
vc_env = query_vcvarsall(VERSION, plat_spec)
修改为
vc_env = query_vcvarsall(11.0, plat_spec) #VS2012 = VC11.0
如此一来Cython终於安装成功了。
但是在试验时又发生问题。
我依照 Cython的文件试作了一个.pyx,它应该要被编译成可以被import的.so。
但出现了 ValueError: [u'path', u'include', u'lib']
我再次google的结果,发现了
http://bugs.python.org/issue7511,
我依照他提供的msvccompiler9_27.diff 修改了我的msvc9compiler.py,
而问题还是没解决。
错误是NameError: name 'KEY_BASE' is not defined
我已经依照注解内的叙述更新环境变数了,但这个问题依然存在,困扰了我四天。
想请问有没有人有相同的问题? 或是能提供一些方向?
最後贴上最後一次的全部的错误讯息。
d:\Python_Emample\Cython\helloworld>python setup.py build_ext --inplace
Traceback (most recent call last):
File "setup.py", line 3, in <module>
from Cython.Distutils import build_ext
File "C:\Python27\lib\site-packages\Cython\Distutils\__init__.py", line 1,
in <module>
from Cython.Distutils.build_ext import build_ext
File "C:\Python27\lib\site-packages\Cython\Distutils\build_ext.py", line
19, in <module>
from distutils.command import build_ext as _build_ext
File "C:\Python27\lib\distutils\command\build_ext.py", line 23, in <module>
from distutils.msvccompiler import get_build_version
File "C:\Python27\lib\distutils\msvccompiler.py", line 657, in <module>
from distutils.msvc9compiler import MSVCCompiler
File "C:\Python27\lib\distutils\msvc9compiler.py", line 69, in <module>
r"v%sA"
NameError: name 'KEY_BASE' is not defined
--
◤ ◥ ◢ ◣
杰米,炸掉它吧。 ⊙▁⊙─ ─⊙▂⊙ 碰到问题,用C4就对了!
╰ ∕皿﹨ ◥皿◤ ╯
◥█◤◢ ◥ ︶◤
Adam Savage ◤ ︶ ◥◤ ﹨▼∕◥ Jamie Hyneman
MYTHBUSTERS ◥ ◤\◥ by dajidali
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.172.117.97
1F:→ swpoker:我没那麽复杂,就是先写好bat or sh确定可执行java 06/27 10:49
2F:→ swpoker:然後透过os去执行该bat/sh而已,在处理一下console输出结果 06/27 10:51
3F:→ swpoker:我每天都是这样跑写好的java 06/27 10:51
4F:→ KagiJhou:谢谢回应,但这不是我问的问题...... 06/27 21:03
5F:→ swpoker:那跟jython有啥不同阿? 06/28 09:18
6F:推 timTan:先试一下 Jython, it is easier 06/28 10:07
7F:推 ming1053:一楼的确回答你了啊 不然你要做什麽@@ 06/28 15:38
to ming1053:您说的是,我也认为能够实现python/java协作的方法不只有一种,
因此我的问题才会是「以VS编译时产生的错误解决法」,而不是「要怎麽用python执行java」
另外也感谢上面两位,我接下来会尝试改用jython。
※ 编辑: KagiJhou 来自: 61.227.253.119 (06/28 18:03)
8F:推 ya790206:Pyjnius 是让你可以在 CPython 下呼叫 java 的函数库。 06/28 19:15
9F:→ ya790206:而 jython 是跑在 jvm 上的 python interrupter。 06/28 19:16
10F:推 timTan:不过 PyJinus 很帅呢! 07/01 07:48