Saya memiliki Windows 7 64-bit, dengan python 2.7.11 dan python 3.5.1 (keduanya 32-bit) diinstal, dan saya telah mengkompilasi vim dengan python / dyn dan python3 / dyn, tetapi saya tetap mendapatkan kesalahan berikut:
:py print "hello"
E887: Sorry, this command is disabled, the Python's site module could not be loaded
Namun, berikut ini semua berfungsi dengan baik:
C:\python27\python -c "import site;"
dan
:py3 print("hello")
Ini adalah info versi vim saya:
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Jan 29 2016 11:58:41)
MS-Windows 32-bit console version
Included patches: 1-1194
Compiled by afontaine@PHOENIX
Huge version without GUI. Features included (+) or not (-):
+acl +eval -mouseshape +tag_old_static
+arabic +ex_extra +multi_byte_ime/dyn -tag_any_white
+autocmd +extra_search +multi_lang -tcl
-balloon_eval +farsi -mzscheme -tgetent
-browse +file_in_path -netbeans_intg -termresponse
++builtin_terms +find_in_path +path_extra +textobjects
+byte_offset +float -perl +title
-channel +folding +persistent_undo -toolbar
+cindent -footer -postscript +user_commands
+clientserver +gettext/dyn +printer +vertsplit
+clipboard -hangul_input +profile +virtualedit
+cmdline_compl +iconv/dyn +python/dyn +visual
+cmdline_hist +insert_expand +python3/dyn +visualextra
+cmdline_info +jumplist +quickfix +viminfo
+comments +keymap +reltime +vreplace
+conceal +langmap +rightleft +wildignore
+cryptv +libcall -ruby +wildmenu
+cscope +linebreak +scrollbind +windows
+cursorbind +lispindent +signs +writebackup
+cursorshape +listcmds +smartindent -xfontset
+dialog_con +localmap -sniff -xim
+diff -lua +startuptime -xterm_save
+digraphs +menu +statusline -xpm_w32
-dnd +mksession -sun_workshop
-ebcdic +modify_fname +syntax
+emacs_tags +mouse +tag_binary
Compilation: gcc -Iproto -DWIN32 -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -DHAVE_PATHDEF -DFEAT_HUGE -DHAVE_GETTEXT -DHAVE_LOCALE_H -DDYNAMIC_GETTEXT -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_CHANNEL -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_MBYTE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DDYNAMIC_ICONV -pipe -w -march=i386 -Wall -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL="python27.dll" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL="python35.dll" -DFEAT_XPM_W32 -I xpm/x86/include -I xpm/x86/../include -O3 -fomit-frame-pointer -freg-struct-return -s
Linking: gcc -Iproto -DWIN32 -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -DHAVE_PATHDEF -DFEAT_HUGE -DHAVE_GETTEXT -DHAVE_LOCALE_H -DDYNAMIC_GETTEXT -DFEAT_CSCOPE -DFEAT_NETBEANS_INTG -DFEAT_CHANNEL -DFEAT_GUI_W32 -DFEAT_CLIPBOARD -DFEAT_MBYTE -DFEAT_MBYTE_IME -DDYNAMIC_IME -DDYNAMIC_ICONV -pipe -w -march=i386 -Wall -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL="python27.dll" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL="python35.dll" -DFEAT_XPM_W32 -I xpm/x86/include -I xpm/x86/../include -O3 -fomit-frame-pointer -freg-struct-return -s -mwindows -o gvim.exe -lkernel32 -luser32 -lgdi32 -ladvapi32 -lcomdlg32 -lcomctl32 -lversion -lwsock32 -Lxpm/x86/lib -lXpm -lole32 -luuid
Dan where python27.dll
outputC:\Windows\System32
Saya sudah mencoba saran dari posting grup google ini , tetapi tidak berhasil.
Saya hanya ingin agar YouCompleteMe berjalan dengan sukses.
microsoft-windows
vimscript-python
afontaine
sumber
sumber
:help python-dynamic
mengatakan...To use the Python interface the Python DLL must be in your search path. In a console window type "path" to see what directories are used.
:!where python27.dll
kembaliC:\Windows\System32\python27.dll
. Perhatikan juga bahwa jika perpustakaan hilang, kesalahan yang berbeda terjadi:E370: Could not load library python27.dll
danE263: Sorry, this command is disabled, the Python library could not be loaded.
:py3
bekerja tetapi:py
tidak? Mungkin saja jika salah satu plugin dijalankan:py3
saat peluncuran vim. Lihat:he python-2-and-3
untuk menjelaskan bagaimana python / dyn dan python3 / dyn bekerja bersama ..Jawaban:
Baiklah, tampaknya keadaannya adalah ini: VIM pada Windows mendukung python
2.7.9
, bukan2.7.11
. Mungkin berhasil2.7.10
, saya tidak mengujinya.Meskipun saya dikompilasi VIM pada Windows dengan referensi ke
2.7.11
DLL, tiba-tiba bekerja ketika saya mencoba menukar2.7.11
untuk2.7.9
Saya tidak yakin jika saya melakukan sesuatu yang salah
2.7.11
, dan itu benar-benar berhasil, tetapi saya tidak punya waktu untuk mencari tahu.sumber
Jadi saya punya masalah yang sangat mirip pada Windows 10 saya tetapi untuk 64 bit vim dan python.
TL; DR
Masalahnya tidak ada hubungannya dengan YouCompleteMe dalam kasus saya. Misalkan YCM dipenuhi dengan python 3. Untuk membuat python27 benar-benar tidak terlihat oleh VIM adalah apa yang membantu saya memecahkan masalah.
TortoiseHg
yang memiliki file python27.dll dan yang memiliki repositoriPath
, yang berarti terlihat oleh vim. Untuk membuatnya tidak terlihat, cukup hapus repositori TortoiseHg dariPath
(Secara umum, semua program non-python yang berisi python27.dll dan yang jalurnya masukPath
. Dengan melakukanwhere python27.dll
di konsol windows, Anda menemukan semuanya.)C:\Windows\System32
juga terlihat vim. Untuk membuatnya juga tidak terlihat, Pindahkan keC:\Python27
. Dan hapusC:\Python27
dariPath
.%PYTHONPATH%
tidak disetel. Pastikan repositori Python 3.5 ada di dalamPath
.Sistem saya
%PYTHONHOME%
diatur ke folder instalasi python 3 dan termasuk dalamPath
.Masalahku
Kesalahan terdeteksi ketika vim diluncurkan seperti yang ditunjukkan di bawah ini.
Pesan adalah
Diagnostik
Keduanya
:echo has('python')
dan:echo has('python3')
keluaran 1. Tetapi ketika saya melakukannya:py print 'test'
, vim memberi saya pesan kesalahan E887 yang sama.Kemudian saya benar-benar menghapus Python 2.7.12, tetapi
:echo has('python')
masih menampilkan 1 dan:py print 'test'
masih memberikan E887 Error! Sementara itu:py3 print('test')
berfungsi selalu OK dan tes output seperti yang diharapkan.Untuk memastikan itu bukan masalah dari YouCompleteMe, saya meluncurkan vim by
gvim -u NONE
. Tes cetak memberikan pesan kesalahan yang sama. Jadi masalahnya adalah dari vim itu sendiri, yang gagal melakukan staf terkait dengan modul situs python 2.7.x.Beberapa orang menyarankan untuk menginstal Python 2.7.9, tetapi itu tidak berhasil untuk saya. Mungkin solusi ini hanya berfungsi untuk 32 bit python 2.7. Saya tidak menguji jadi saya tidak bisa mengkonfirmasi.
Mengapa semua ini terjadi:
where python27.dll
saya temukan di bawah repositori TortoiseHG ada file python27.dll lain. Itu sebabnya:echo has('python')
masih menghasilkan 1 setelah saya menghapus Python 2.7.12.Kemudian, untuk membuatnya lebih sederhana, perintah
:has('python')
menghasilkan 1 jika kedua kondisi terpenuhi:Vim dikompilasi dengan fitur + dyn / python (masing-masing + dyn / python3 saat melakukan
:has('python3')
)File python27.dll ditemukan di Path Anda. (masing-masing python35.dll. lihat
:help-python-dynamic
dan:help has-python
untuk informasi lebih lanjut.) Tetapi tidak melakukan pemeriksaan lebih lanjut ; itu sebabnyahas-python
cek memberi 1 tetapi kesalahan masih terdeteksi.Python 2.7.12 tidak secara otomatis mengatur
%PYTHONPATH%
, sementara Python 3.5.2 mengatur nilai ini ke<where_python_found>\Lib
dan<where_python_found>\Lib\site-packages
pada Windows starup jika menemukan python dieksekusi diPath
. Dalam kasus saya di mana hanya python 3.5.2 diinstal dan python27.dll TortoiseHg ditemukan oleh vim, Ketika saya jalankan:py print 'test'
, vim akan mencari modul situs python 2.7 tetapi dalam Python 3.5%PYTHONPATH%
. Karena itulah Error E887 terlempar. Akibatnya, jika kita menetapkan%PYTHONPATH%
secara eksplisit untuk menunjuk ke python 2.7, Kesalahan E887 akan hilang !Larutan
Lihat mulai TL: bagian DR.
Kesimpulan
Anda pernah memiliki kedua versi python dan menghapusnya. Anda mungkin dengan senang hati berpikir itu bersih tetapi vim memberi tahu Anda bahwa dia menemukan python yang telah Anda hapus, Anda heran dan saya juga. Itu karena sering masih ada beberapa dll python misterius yang tersisa di sistem Anda dan sayangnya dapat dideteksi oleh vim. Jadi, Apakah Anda menyimpan versi python lain di hard drive Anda atau tidak, pastikan itu sama sekali tidak terlihat oleh vim.
Fakta bahwa kedua versi python dapat dipanggil oleh instance vim yang sama saat run time tidak apa-apa. Masalah sebenarnya adalah kedua versi saham python ONE
PYTHONPATH
. JikaPYTHONPATH
tidak cocok dengan versi python, python gagal menemukan paket situs yang tepat dan membuat vim mengeluh. Ini membuat sebagian besar dari kita berpikir itu adalah masalah vim. Tapi tidak.sumber