anm*_*wal 6 python linux vim ubuntu python-2.7
我按照这些说明操作,以便在Vim中安装YouCompleteMe,但是当我发出时:
./install.py --clang-completer
Run Code Online (Sandbox Code Playgroud)
出现以下错误消息:
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
Run Code Online (Sandbox Code Playgroud)
现在我被困住了,我该怎么办?
dka*_*sak 15
我检查了YouCompleteMe的构建系统,它使用了一个自定义构建脚本,该脚本使用Python模块distutils
查找Python库和包含目录的路径.你/usr/local/
的Python安装可能包含在您的PATH
变量官方之前/usr
安装,这样只是运行python
可能运行在您的自定义安装,使distutils
返回其目录.
要检查是否为真,请尝试运行which python
.我认为它将返回类似的东西/usr/local/bin/python
.
在这一点上,我看到了几个选项.
/usr/bin/python ./install.py --clang-completer
编辑--js-completer
YouCompleteMe的插件目录中的脚本,以硬编码自定义Python安装的路径.例如,您可以third_party/ycmd/build.py
使用以下内容替换现有函数:
def FindPythonLibraries():
return ('/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so',
'/usr/include/python2.7')
Run Code Online (Sandbox Code Playgroud)
请注意,这将使更新YouCompleteMe变得更加困难,因为您必须确保在更新其源时不会覆盖它.
FindPythonLibraries
.此命令将告诉您安装该文件的软件包,除非您手动安装它(绕过软件包管理器).dpkg -S /usr/local/lib/python2.7/config/libpython2.7.a
Python安装,同时确保安装了官方存储库中的Python(包/usr/local
和python2.7
).从长远来看,使用官方Python软件包可能会更好.