无法在 Anaconda/Python3 中导入 clang 绑定
Unable to import clang bindings in Anaconda/Python3
我刚刚将 clang pip 安装到我的 Anaconda Python 3 安装中,但我无法导入 clang python 绑定...
C:\Temp>python -m pip install clang --proxy="xxxxx"
Collecting clang
Downloading clang-3.8.tar.gz
Building wheels for collected packages: clang
Running setup.py bdist_wheel for clang ... done
Stored in directory: C:\xxxxxx
Successfully built clang
Installing collected packages: clang
Successfully installed clang-3.8
C:\Temp>python
>>> import clang.cindex
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\lib\site-packages\clang\cindex.py", line 515
raise ValueError,'{0} value {1} already loaded'.format(
^
SyntaxError: invalid syntax
不过,我自己能够成功导入 clang,尽管没有任何有用的东西...
>>> import clang
>>> clang.
clang.__all__ clang.__loader__ clang.__spec__ clang.__dir__( clang.__getattribute__( clang.__le__( clang.__reduce__( clang.__sizeof__(
clang.__cached__ clang.__name__ clang.__class__( clang.__eq__( clang.__gt__( clang.__lt__( clang.__reduce_ex__( clang.__str__(
clang.__doc__ clang.__package__ clang.__delattr__( clang.__format__( clang.__hash__( clang.__ne__( clang.__repr__( clang.__subclasshook__(
clang.__file__ clang.__path__ clang.__dict__ clang.__ge__( clang.__init__( clang.__new__( clang.__setattr__(
查看引发异常的源文件似乎表明它可能是 Python3 语法问题...
### Cursor Kinds ###
class BaseEnumeration(object):
"""
Common base class for named enumerations held in sync with Index.h values.
Subclasses must define their own _kinds and _name_map members, as:
_kinds = []
_name_map = None
These values hold the per-subclass instances and value-to-name mappings,
respectively.
"""
def __init__(self, value):
if value >= len(self.__class__._kinds):
self.__class__._kinds += [None] * (value - len(self.__class__._kinds) + 1)
if self.__class__._kinds[value] is not None:
raise ValueError,'{0} value {1} already loaded'.format( #<--Py2 Syntax str(self.__class__), value)
self.value = value
self.__class__._kinds[value] = self
self.__class__._name_map = None
查看 cindex.py 的其余部分似乎一致认为尚未为 Python3 开发 libclang 绑定。那是准确的还是我的 pip 或其他东西在安装过程中混淆了?
看起来这是一个 Py2/3 语法问题,幸运的是我能够 运行 2to3.exe 文件夹 C:\Anaconda3\Lib\site-packages\clang
并合并修复
现在我在做生意...
>>> import clang.cindex
>>> clang.cindex.
clang.cindex.ARRAY( clang.cindex.LibclangError( clang.cindex.__doc__ clang.cindex.c_uint64( clang.cindex.set_last_error(
clang.cindex.AccessSpecifier( clang.cindex.LibraryLoader( clang.cindex.__file__ clang.cindex.c_uint8( clang.cindex.sizeof(
clang.cindex.ArgumentError( clang.cindex.LittleEndianStructure( clang.cindex.__loader__ clang.cindex.c_ulong( clang.cindex.string_at(
clang.cindex.Array( clang.cindex.OleDLL( clang.cindex.__name__ clang.cindex.c_ulonglong( clang.cindex.util
clang.cindex.BaseEnumeration( clang.cindex.POINTER( clang.cindex.__package__ clang.cindex.c_ushort( clang.cindex.windll
clang.cindex.BigEndianStructure( clang.cindex.PYFUNCTYPE( clang.cindex.__spec__ clang.cindex.c_void_p( clang.cindex.wintypes
clang.cindex.CCRStructure( clang.cindex.PyDLL( clang.cindex.addressof( clang.cindex.c_voidp( clang.cindex.wstring_at(
clang.cindex.CDLL( clang.cindex.RTLD_GLOBAL clang.cindex.alignment( clang.cindex.c_wchar( clang.cindex.__class__(
clang.cindex.CFUNCTYPE( clang.cindex.RTLD_LOCAL clang.cindex.availabilityKinds clang.cindex.c_wchar_p( clang.cindex.__delattr__(
clang.cindex.CachedProperty( clang.cindex.RefQualifierKind( clang.cindex.byref( clang.cindex.callbacks clang.cindex.__dict__
clang.cindex.ClangObject( clang.cindex.SetPointerType( clang.cindex.c_bool( clang.cindex.cast( clang.cindex.__dir__(
clang.cindex.CodeCompletionResult( clang.cindex.SourceLocation( clang.cindex.c_buffer( clang.cindex.cdll clang.cindex.__eq__(
clang.cindex.CodeCompletionResults( clang.cindex.SourceRange( clang.cindex.c_byte( clang.cindex.clang clang.cindex.__format__(
clang.cindex.CompilationDatabase( clang.cindex.SpellingCache clang.cindex.c_char( clang.cindex.collections clang.cindex.__ge__(
clang.cindex.CompilationDatabaseError( clang.cindex.StorageClass( clang.cindex.c_char_p( clang.cindex.completionChunkKindMap clang.cindex.__getattribute__(
clang.cindex.CompileCommand( clang.cindex.Structure( clang.cindex.c_double( clang.cindex.conf clang.cindex.__gt__(
clang.cindex.CompileCommands( clang.cindex.TemplateArgumentKind( clang.cindex.c_float( clang.cindex.create_string_buffer( clang.cindex.__hash__(
clang.cindex.CompletionChunk( clang.cindex.Token( clang.cindex.c_int( clang.cindex.create_unicode_buffer( clang.cindex.__init__(
clang.cindex.CompletionString( clang.cindex.TokenGroup( clang.cindex.c_int16( clang.cindex.functionList clang.cindex.__le__(
clang.cindex.Config( clang.cindex.TokenKind( clang.cindex.c_int32( clang.cindex.get_errno( clang.cindex.__lt__(
clang.cindex.Cursor( clang.cindex.TranslationUnit( clang.cindex.c_int64( clang.cindex.get_last_error( clang.cindex.__ne__(
clang.cindex.CursorKind( clang.cindex.TranslationUnitLoadError( clang.cindex.c_int8( clang.cindex.memmove( clang.cindex.__new__(
clang.cindex.DEFAULT_MODE clang.cindex.TranslationUnitSaveError( clang.cindex.c_long( clang.cindex.memset( clang.cindex.__reduce__(
clang.cindex.Diagnostic( clang.cindex.Type( clang.cindex.c_longdouble( clang.cindex.oledll clang.cindex.__reduce_ex__(
clang.cindex.DllCanUnloadNow( clang.cindex.TypeKind( clang.cindex.c_longlong( clang.cindex.pointer( clang.cindex.__repr__(
clang.cindex.DllGetClassObject( clang.cindex.Union( clang.cindex.c_object_p( clang.cindex.py_object( clang.cindex.__setattr__(
clang.cindex.File( clang.cindex.WINFUNCTYPE( clang.cindex.c_short( clang.cindex.pydll clang.cindex.__sizeof__(
clang.cindex.FileInclusion( clang.cindex.WinDLL( clang.cindex.c_size_t( clang.cindex.pythonapi clang.cindex.__str__(
clang.cindex.FixIt( clang.cindex.WinError( clang.cindex.c_ssize_t( clang.cindex.register_enumerations( clang.cindex.__subclasshook__(
clang.cindex.FormatError( clang.cindex._CXString( clang.cindex.c_ubyte( clang.cindex.register_function(
clang.cindex.GetLastError( clang.cindex._CXUnsavedFile( clang.cindex.c_uint( clang.cindex.register_functions(
clang.cindex.HRESULT( clang.cindex.__all__ clang.cindex.c_uint16( clang.cindex.resize(
clang.cindex.Index( clang.cindex.__cached__ clang.cindex.c_uint32( clang.cindex.set_errno(
我一直用于 python2.7 的 'pip' 怎么变成了 python3 的 pip?
$ pip --version
pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)
但是 python2.7 之后设置被 运行,导致语法错误。魔法.
我打了同样的电话,只是确保 python2.7:
的点子
pip2 install clang
而且效果很好。
我刚刚将 clang pip 安装到我的 Anaconda Python 3 安装中,但我无法导入 clang python 绑定...
C:\Temp>python -m pip install clang --proxy="xxxxx"
Collecting clang
Downloading clang-3.8.tar.gz
Building wheels for collected packages: clang
Running setup.py bdist_wheel for clang ... done
Stored in directory: C:\xxxxxx
Successfully built clang
Installing collected packages: clang
Successfully installed clang-3.8
C:\Temp>python
>>> import clang.cindex
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda3\lib\site-packages\clang\cindex.py", line 515
raise ValueError,'{0} value {1} already loaded'.format(
^
SyntaxError: invalid syntax
不过,我自己能够成功导入 clang,尽管没有任何有用的东西...
>>> import clang
>>> clang.
clang.__all__ clang.__loader__ clang.__spec__ clang.__dir__( clang.__getattribute__( clang.__le__( clang.__reduce__( clang.__sizeof__(
clang.__cached__ clang.__name__ clang.__class__( clang.__eq__( clang.__gt__( clang.__lt__( clang.__reduce_ex__( clang.__str__(
clang.__doc__ clang.__package__ clang.__delattr__( clang.__format__( clang.__hash__( clang.__ne__( clang.__repr__( clang.__subclasshook__(
clang.__file__ clang.__path__ clang.__dict__ clang.__ge__( clang.__init__( clang.__new__( clang.__setattr__(
查看引发异常的源文件似乎表明它可能是 Python3 语法问题...
### Cursor Kinds ###
class BaseEnumeration(object):
"""
Common base class for named enumerations held in sync with Index.h values.
Subclasses must define their own _kinds and _name_map members, as:
_kinds = []
_name_map = None
These values hold the per-subclass instances and value-to-name mappings,
respectively.
"""
def __init__(self, value):
if value >= len(self.__class__._kinds):
self.__class__._kinds += [None] * (value - len(self.__class__._kinds) + 1)
if self.__class__._kinds[value] is not None:
raise ValueError,'{0} value {1} already loaded'.format( #<--Py2 Syntax str(self.__class__), value)
self.value = value
self.__class__._kinds[value] = self
self.__class__._name_map = None
查看 cindex.py 的其余部分似乎一致认为尚未为 Python3 开发 libclang 绑定。那是准确的还是我的 pip 或其他东西在安装过程中混淆了?
看起来这是一个 Py2/3 语法问题,幸运的是我能够 运行 2to3.exe 文件夹 C:\Anaconda3\Lib\site-packages\clang
并合并修复
现在我在做生意...
>>> import clang.cindex
>>> clang.cindex.
clang.cindex.ARRAY( clang.cindex.LibclangError( clang.cindex.__doc__ clang.cindex.c_uint64( clang.cindex.set_last_error(
clang.cindex.AccessSpecifier( clang.cindex.LibraryLoader( clang.cindex.__file__ clang.cindex.c_uint8( clang.cindex.sizeof(
clang.cindex.ArgumentError( clang.cindex.LittleEndianStructure( clang.cindex.__loader__ clang.cindex.c_ulong( clang.cindex.string_at(
clang.cindex.Array( clang.cindex.OleDLL( clang.cindex.__name__ clang.cindex.c_ulonglong( clang.cindex.util
clang.cindex.BaseEnumeration( clang.cindex.POINTER( clang.cindex.__package__ clang.cindex.c_ushort( clang.cindex.windll
clang.cindex.BigEndianStructure( clang.cindex.PYFUNCTYPE( clang.cindex.__spec__ clang.cindex.c_void_p( clang.cindex.wintypes
clang.cindex.CCRStructure( clang.cindex.PyDLL( clang.cindex.addressof( clang.cindex.c_voidp( clang.cindex.wstring_at(
clang.cindex.CDLL( clang.cindex.RTLD_GLOBAL clang.cindex.alignment( clang.cindex.c_wchar( clang.cindex.__class__(
clang.cindex.CFUNCTYPE( clang.cindex.RTLD_LOCAL clang.cindex.availabilityKinds clang.cindex.c_wchar_p( clang.cindex.__delattr__(
clang.cindex.CachedProperty( clang.cindex.RefQualifierKind( clang.cindex.byref( clang.cindex.callbacks clang.cindex.__dict__
clang.cindex.ClangObject( clang.cindex.SetPointerType( clang.cindex.c_bool( clang.cindex.cast( clang.cindex.__dir__(
clang.cindex.CodeCompletionResult( clang.cindex.SourceLocation( clang.cindex.c_buffer( clang.cindex.cdll clang.cindex.__eq__(
clang.cindex.CodeCompletionResults( clang.cindex.SourceRange( clang.cindex.c_byte( clang.cindex.clang clang.cindex.__format__(
clang.cindex.CompilationDatabase( clang.cindex.SpellingCache clang.cindex.c_char( clang.cindex.collections clang.cindex.__ge__(
clang.cindex.CompilationDatabaseError( clang.cindex.StorageClass( clang.cindex.c_char_p( clang.cindex.completionChunkKindMap clang.cindex.__getattribute__(
clang.cindex.CompileCommand( clang.cindex.Structure( clang.cindex.c_double( clang.cindex.conf clang.cindex.__gt__(
clang.cindex.CompileCommands( clang.cindex.TemplateArgumentKind( clang.cindex.c_float( clang.cindex.create_string_buffer( clang.cindex.__hash__(
clang.cindex.CompletionChunk( clang.cindex.Token( clang.cindex.c_int( clang.cindex.create_unicode_buffer( clang.cindex.__init__(
clang.cindex.CompletionString( clang.cindex.TokenGroup( clang.cindex.c_int16( clang.cindex.functionList clang.cindex.__le__(
clang.cindex.Config( clang.cindex.TokenKind( clang.cindex.c_int32( clang.cindex.get_errno( clang.cindex.__lt__(
clang.cindex.Cursor( clang.cindex.TranslationUnit( clang.cindex.c_int64( clang.cindex.get_last_error( clang.cindex.__ne__(
clang.cindex.CursorKind( clang.cindex.TranslationUnitLoadError( clang.cindex.c_int8( clang.cindex.memmove( clang.cindex.__new__(
clang.cindex.DEFAULT_MODE clang.cindex.TranslationUnitSaveError( clang.cindex.c_long( clang.cindex.memset( clang.cindex.__reduce__(
clang.cindex.Diagnostic( clang.cindex.Type( clang.cindex.c_longdouble( clang.cindex.oledll clang.cindex.__reduce_ex__(
clang.cindex.DllCanUnloadNow( clang.cindex.TypeKind( clang.cindex.c_longlong( clang.cindex.pointer( clang.cindex.__repr__(
clang.cindex.DllGetClassObject( clang.cindex.Union( clang.cindex.c_object_p( clang.cindex.py_object( clang.cindex.__setattr__(
clang.cindex.File( clang.cindex.WINFUNCTYPE( clang.cindex.c_short( clang.cindex.pydll clang.cindex.__sizeof__(
clang.cindex.FileInclusion( clang.cindex.WinDLL( clang.cindex.c_size_t( clang.cindex.pythonapi clang.cindex.__str__(
clang.cindex.FixIt( clang.cindex.WinError( clang.cindex.c_ssize_t( clang.cindex.register_enumerations( clang.cindex.__subclasshook__(
clang.cindex.FormatError( clang.cindex._CXString( clang.cindex.c_ubyte( clang.cindex.register_function(
clang.cindex.GetLastError( clang.cindex._CXUnsavedFile( clang.cindex.c_uint( clang.cindex.register_functions(
clang.cindex.HRESULT( clang.cindex.__all__ clang.cindex.c_uint16( clang.cindex.resize(
clang.cindex.Index( clang.cindex.__cached__ clang.cindex.c_uint32( clang.cindex.set_errno(
我一直用于 python2.7 的 'pip' 怎么变成了 python3 的 pip?
$ pip --version
pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)
但是 python2.7 之后设置被 运行,导致语法错误。魔法.
我打了同样的电话,只是确保 python2.7:
的点子pip2 install clang
而且效果很好。