簡體   English   中英

在vim中安裝YouCompleteMe時遇到python問題

[英]Difficulty with python while installing YouCompleteMe in vim

我按照這些說明操作 ,以便在Vim中安裝YouCompleteMe,但是當我發出時:

./install.py --clang-completer

出現以下錯誤消息:

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 compiled 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 <module>
    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

現在我被困住了,我該怎么辦?

我檢查了YouCompleteMe的構建系統,它使用了一個自定義構建腳本,該腳本使用Python模塊distutils來查找Python庫和包含目錄的路徑。 您的/usr/local/ Python安裝可能在官方/usr安裝之前包含在您的PATH變量中,因此運行python可能會運行您的自定義安裝,使得distutils返回其目錄。

要檢查是否為真,請嘗試運行which python 我假設它會返回類似/usr/local/bin/python

此時,我看到了幾個選項(按優先順序排列)。

  1. 嘗試運行YCM的安裝腳本,指定哪個Python可執行文件應該顯式運行它: /usr/bin/python ./install.py --clang-completer

    如果您對YCM使用任何其他完成符,則應在上面的行中添加適當的標記(例如--js-completer以完成JavaScript)。

  2. 編輯YouCompleteMe的插件目錄中的腳本third_party/ycmd/build.py ,以硬編碼自定義Python安裝的路徑。 例如,您可以使用以下內容替換現有的FindPythonLibraries函數:

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

    請注意,這將使更新YouCompleteMe變得更加困難,因為您必須確保在更新其源時不會覆蓋它。

  3. 將Python的自定義安裝替換為作為共享庫構建的安裝。 具體細節取決於您首先安裝現有Python安裝的方式。 您可以使用dpkg -S /usr/local/lib/python2.7/config/libpython2.7.a來檢查是否通過包安裝了它。 此命令將告訴您安裝該文件的軟件包,除非您手動安裝它(繞過軟件包管理器)。
  4. 刪除自定義/usr/local Python安裝,同時確保安裝了官方存儲庫中的Python(包python2.7libpython2.7 )。

從長遠來看,使用官方Python軟件包可能會更好。

該插件在同一操作系統上為我構建。 配置中的相關行如下所示:

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

共享對象可以標識為屬於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

所以我會檢查你是否有文件命名,如果沒有嘗試sudo apt install libpython2.7 ,否則嘗試移走靜態版本,或者告訴我們你是如何安裝Python的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM