Zkontroloval jsem sestavovací systém YouCompleteMe a používá vlastní sestavovací skript, který používá modul Python distutils
najít cesty ke knihovně Pythonu a zahrnout adresáře. Vaše /usr/local/
instalace Pythonu je pravděpodobně zahrnuta ve vašem PATH
proměnná před oficiální /usr
instalace, takže stačí spustit python
pravděpodobně spustí vaši vlastní instalaci, takže distutils
vrátit jeho adresáře.
Chcete-li zkontrolovat, zda je to pravda, zkuste spustit which python
. Předpokládám, že to vrátí něco jako /usr/local/bin/python
.
V tomto okamžiku vidím několik možností (v pořadí podle preferencí).
-
Zkuste spustit instalační skript YCM zadáním, který spustitelný soubor Pythonu by jej měl explicitně spustit:
/usr/bin/python ./install.py --clang-completer
Pokud s YCM používáte nějaké další dokončovače, měli byste do výše uvedeného řádku přidat příslušné příznaky (např.
--js-completer
pro dokončení JavaScriptu). -
Upravte skript
third_party/ycmd/build.py
v adresáři zásuvných modulů YouCompleteMe a napevno zakódujte cesty pro vaši vlastní instalaci Pythonu. Můžete například nahradit stávajícíFindPythonLibraries
funkce s následujícím:def FindPythonLibraries(): return ('/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so', '/usr/include/python2.7')
Upozorňujeme, že to ztíží aktualizaci YouCompleteMe, protože budete muset zajistit, aby nedošlo k přepsání, když aktualizujete jeho zdroj.
- Nahraďte svou vlastní instalaci Pythonu instalací vytvořenou jako sdílená knihovna. Podrobnosti budou záviset na tom, jak jste nainstalovali stávající instalaci Pythonu. Můžete zkontrolovat, zda jste jej nainstalovali prostřednictvím balíčku pomocí
dpkg -S /usr/local/lib/python2.7/config/libpython2.7.a
. Tento příkaz vám řekne, který balíček nainstaloval daný soubor, pokud jste jej nenainstalovali ručně (vynecháte správce balíčků). - Odeberte vlastní
/usr/local
Instalace Pythonu při zajištění, že máte nainstalovaný Python z oficiálních repozitářů (balíčkypython2.7
alibpython2.7
).
Z dlouhodobého hlediska by pro vás pravděpodobně bylo lepší používat oficiální balíčky Pythonu.