Windows(32bit) なんだけど Vim8 で見ている Python のバージョンって、V3.5 か、で悶絶

仕事中焦って、小一時間程ハマって、原因知った時そんなことかよと苛っとした、とっても恥ずかしい話。
そして結果、一周して戻ってくることになります。

メモ。

今回は珍しく Windows 上での話題。

環境は、cmd で ver で以下。;

Microsoft Windows [Version 6.1.7601]

Windows 7 SP1 草*1

Python が無いと言われた

[denite] denite.nvim does not work with this version.
[denite] It requires Vim 8.0+ with Python3 support("+python3").

入っているのに。

つか、直前まで Python の作業していたのに。

echo has('python3')0 ?


原因: WindowsVim が対象とする Python のデフォは 3.5。3.6 ではない。

作業は 3.6 を使っていたので、「3.5、何でいるの? 2 つなんて要らないんだけど」でアンインストールした 3.5 を再インストールしたら、元に戻った。

ちゃんとドキュメントにありました orz ;

MS-Windows
...
DLLの名前はVimコンパイルした時のPythonのバージョンに一致しなければなりません。 ... Python 3の場合はpython35.dll (Python3.5)です。これを確かめるには、"gvim.exe" を開き、"python\d*.dll\c" を検索してください。

直前まで普通通りに作業できていたので、焦りました。

悪いのは、知らないで消していた自分。

そしたら jedi-vim でも怒られた

Please install Jedi if you want to use jedi-vim.
The error was: No module named 'jedi'
Please install Jedi if you want to use jedi-vim.
The error was: No module named 'jedi'

:h jedi すると、正しくヘルプが表示されるのだけど。

3.6 のを見ているようす。3.5 としての jedi 入れる

ターミナルで確認。

$ pip --version
pip 9.0.1 from c:\users\home\appdata\local\programs\python\python36-32\lib\site-packages (python 3.6)

あんま構ってる時間も、気持ちもないので (笑) 3.6 側のディレクトリをリネーム。*2

$ pip --version
pip 9.0.1 from c:\users\home\appdata\local\programs\python\python35-32\lib\site-packages (python 3.5)

jedi 居る?

$ pip list
pip (9.0.1)
setuptools (28.8.0)

居ない。pip install。

pip --proxy=proxy.abcde.xyz.jp:00000 install jedi

上手く動作するようになったみたい。

先ほどの 3.6 のディレクトリ名は、本来あるべき名称へと戻す。

ところが

pythonthreedll オプションに python36.dll のパスを定義してやれば 3.6 いける。

先ほど引用ヘルプに、こんな記載が有って気になっていました。;

また 'pythondll' か 'pythonthreedll' オプションを Python の DLL を指定するのに使うこともできます。

加えて、普段使いの macOs では 3.6.* で問題なく使っているのに..、と言うのが引っ掛かっていて。

pythonthreedll オプションに直接、3.6 の dll をせっていすればイケるみたい

です。

set pythonthreedll=C:/Users/home/AppData/Local/Programs/Python/Python36-32/python36.dll

自分が使いやすい道具で仕事ができる、そんな環境で働けるとこ行きたいです。

おしまい。

*1:だって、充てがわれるのがそれで,それしか使っていけないのですもの。Microsoft 製品は色々と煩わしくて、使い勝手も文化的にも苦手。

*2:本職でもないですし、作業を楽にしたいと言う動機で触れるレベルの人種ですので、この辺りはご了承をば。