Difficulté avec Python lors de l’installation de YouCompleteMe dans vim

J’ai suivi ces instructions pour installer YouCompleteMe dans Vim, mais quand je lance:

./install.py --clang-completer 

Le message d’erreur suivant s’affiche:

 Searching Python 2.7 libraries... ERROR: found static Python library (/usr/local/lib/python2.7/config/libpython2.7.a) but a dynamic one is required. You must use a Python comstackd with the --enable-shared flag. If using pyenv, you need to run the command: export PYTHON_CONFIGURE_OPTS="--enable-shared" before installing a Python version. Traceback (most recent call last): File "./install.py", line 44, in  Main() File "./install.py", line 33, in Main subprocess.check_call( [ python_binary, build_file ] + sys.argv[1:] ) File "/usr/local/lib/python2.7/subprocess.py", line 540, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['/usr/local/bin/python', u'/home/anmol/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py', '--clang-completer']' returned non-zero exit status 1 

et maintenant je suis coincé, que dois-je faire?

J’ai vérifié le système de construction de YouCompleteMe et il utilise un script de génération personnalisé qui utilise le module Python distutils pour trouver les chemins d’access à la bibliothèque de Python et inclure des répertoires. Votre installation /usr/local/ de Python est probablement incluse dans votre variable PATH avant l’installation officielle de /usr Ainsi, exécuter simplement python exécute probablement votre installation personnalisée, ce qui distutils retourner ses répertoires.

Pour vérifier si cela est vrai, essayez d’exécuter which python . Je suppose qu’il renverra quelque chose comme /usr/local/bin/python .

À ce stade, je vois plusieurs options.

  1. Essayez d’exécuter le script d’installation de YCM en spécifiant quel exécutable Python doit l’exécuter explicitement: /usr/bin/python ./install.py --clang-completer
  2. Editez le script third_party/ycmd/build.py dans le répertoire du plug-in YouCompleteMe pour coder en dur les chemins de votre installation Python personnalisée. Par exemple, vous pouvez remplacer la fonction FindPythonLibraries existante par la suivante:

     def FindPythonLibraries(): return ('/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so', '/usr/include/python2.7') 

    Notez que cela rend plus difficile la mise à jour de YouCompleteMe car vous devez vous assurer qu’il ne sera pas écrasé lors de la mise à jour de sa source.

  3. Mettez à jour votre installation personnalisée de Python avec une installation en tant que bibliothèque partagée. Les détails de cela dépendront de la façon dont vous avez installé cette version de Python en premier lieu. Vous pouvez vérifier si vous l’avez installé via un package en utilisant dpkg -S /usr/local/lib/python2.7/config/libpython2.7.a . Cette commande vous indiquera quel paquet a installé ce fichier, sauf si vous l’avez installé manuellement (en contournant le gestionnaire de paquets).
  4. Supprimez votre installation Python /usr/local tout en vous assurant que vous disposez d’un Python à partir des repositorys officiels installés (packages python2.7 et libpython2.7 ).

À long terme, vous devriez probablement utiliser les packages Python officiels.

Le plugin construit pour moi sur le même système d’exploitation. La ligne correspondante de la configuration ressemble à ceci:

 Found PythonLibs: /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so 

L’object partagé peut être identifié comme appartenant au package libpython2.7 :

 apt-file search /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so libpython2.7: /usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so 

Donc, je voudrais vérifier si vous avez le fichier nommé, sinon essayez sudo apt install libpython2.7 , et sinon essayez de déplacer la version statique, ou laissez-nous savoir comment vous avez installé Python.