![](/img/trans.png)
[英]Vim error `undefined symbol: PyUnicodeUCS2_AsWideChar` after installing YouCompleteMe
[英]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
。
此時,我看到了幾個選項(按優先順序排列)。
嘗試運行YCM的安裝腳本,指定哪個Python可執行文件應該顯式運行它: /usr/bin/python ./install.py --clang-completer
如果您對YCM使用任何其他完成符,則應在上面的行中添加適當的標記(例如--js-completer
以完成JavaScript)。
編輯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變得更加困難,因為您必須確保在更新其源時不會覆蓋它。
dpkg -S /usr/local/lib/python2.7/config/libpython2.7.a
來檢查是否通過包安裝了它。 此命令將告訴您安裝該文件的軟件包,除非您手動安裝它(繞過軟件包管理器)。 /usr/local
Python安裝,同時確保安裝了官方存儲庫中的Python(包python2.7
和libpython2.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.