我只是将已安装的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绑定。这是准确的还是我的点子或其他东西在安装过程中混淆了?
答案 0 :(得分:1)
看起来这是一个Py2 / 3语法问题,幸运的是我能够在文件夹C:\Anaconda3\Lib\site-packages\clang
上运行2to3.exe并合并修复
现在我在做生意......
>>> 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(
答案 1 :(得分:0)
我常用于python2.7的'pip'如何成为python3的pip?
$ pip --version
pip 1.5.6 from /usr/lib/python3/dist-packages (python 3.4)
但是然后设置已经被python2.7运行,导致语法错误。魔法。
我打电话给同样的,只是确保ppi为python2.7:
pip2 install clang
并且效果很好。