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.
/usr/bin/python ./install.py --clang-completer
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.
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). /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.