はじめに
Windows+gVim+pipenv環境ではじめてPythonを開発するので、その時に行ったことをまとめました。
gvim上でオムニ補完と静的コード解析ができるまでがゴールです。
ChocolateyGetインストール
管理者権限のpowershellで下記実行
Set-ExecutionPolicy RemoteSigned
install-packageprovider ChocolateyGet
gitインストール
管理者権限のpowershellで下記実行
install-package git -providerName ChocolateyGet
Pythonインストール
管理者権限のpowershellで下記実行
※最新のpython(現在では3.7.8)がインストールされる
install-package python -providerName ChocolateyGet
※3.6も追加でインストールする場合
Install-Package -Force -RequiredVersion 3.6.8 -ProviderName ChocolateyGet python
pipenvのインストール
pip install --upgrade pip
pip install pipenv
gvimインストール
kaoriya本家からgvimをダウンロードし解凍する。
# kaoriya-vimをCドライブ直下に解凍する場合
Invoke-WebRequest -uri https://github.com/koron/vim-kaoriya/releases/download/v8.1.1048-20190325/vim81-kaoriya-win64-8.1.1048-20190325.zip -OutFile $env:temp\gvim.zip
Expand-Archive $env:temp\gvim.zip -DestinationPath C:\
remove-item $env:temp\gvim.zip
$VIM(gvim.exeのあるフォルダ)をPATHに追加する
管理者権限で下記powershell実行
# kaoriya-vimをCドライブ直下に解凍した場合
$SystemPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
$SystemPath += ";c:\vim81-kaoriya-win64"
[System.Environment]::SetEnvironmentVariable("Path", $SystemPath, "Machine")
gvimプラグインのインストール
下記プラグインを導入する。
https://github.com/davidhalter/jedi-vim
https://github.com/w0rp/ale
※$VIMはgvim.exeのあるフォルダ
※プラグインマネージャを利用している場合はそっちで導入
cd $VIM/plugins
git clone --recursive https://github.com/davidhalter/jedi-vim.git
git clone https://github.com/w0rp/ale.git
pythonファイルを開いたときのオムニ補完をjediに設定するようvimrcに追記
autocmd FileType python setlocal omnifunc=jedi#completions
gvim用のembeddedpythonを設置する
kaoriyaのvimはでデフォルトでpython37にリンクされているのでgvim専用にgvimで利用するライブラリを入れたembeddedpythonを設置しておく
Invoke-WebRequest -uri https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip -OutFile $env:temp\embedpython.zip
Expand-Archive $env:temp\embedpython.zip -DestinationPath C:\vim81-kaoriya-win64\python-3.7.3-embed-amd64
remove-item $env:temp\embedpython.zip
cd C:\vim81-kaoriya-win64\python-3.7.3-embed-amd64
expand-archive python37.zip
remove-item python37.zip
Rename-Item python37 -newname python37.zip
Write-Output "import site"|out-file -Append -Encoding ascii "C:\vim81-kaoriya-win64\python-3.7.3-embed-amd64\python37._pth"
wget "https://bootstrap.pypa.io/get-pip.py" -O "get-pip.py"
.\python.exe get-pip.py
.\python.exe -m pip install flake8
gvim用のembeddedpythonをgvimから使えるようvimrcに追記する
let $PATH = $PATH . ";" . $VIM . "\\python-3.7.3-embed-amd64"
let $PATH = $PATH . ";" . $VIM . "\\python-3.7.3-embed-amd64\\Scripts"
プロジェクト作成
※バージョン3.7の環境を作成する場合
mkdir newproject
cd newproject
pipenv --python 3.7
プロジェクトに必要なライブラリをインストール
pipenv install hogehoge(必要なライブラリ)
pipenvの仮想環境に入る
pipenv shell
(以後の操作はこの仮想環境内で行う)
gvim起動
※pipenv仮想環境内で実行
gvim main.py
実行
※pipenv仮想環境内で実行
python main.py
豆知識
WindowsはPythonにPATHを通さなくてもPythonランチャーからPythonやモジュールの実行が可能。
python公式からダウンロードしたインストーラからPATHを通さずインストールしてpythonランチャーからpipenvを利用すると何故かエラーとなる
ChocolateyGetからインストールすると自動でPATHが通るが、PATHが通っていてもいなくてもpythonランチャーからpipenvの起動可能
補完をするモジュールjediはjedi-vimの中にサブモジュールとして含まれているので別途インストールする必要はない
python-language-serverとvim-lspを用いても補完が可能だが、jedi-vimと違いpython-language-serverをシステムにインストールする必要があり、プロジェクトにインストールしたライブラリに対しての補完が効かない(なにかやり方はあるかもしれない)
pythonファイルをgvimで開いたときにそのpythonファイルが含まれるpipenv仮想環境に自動で入ってくれるプラグインvim-pipenvがあるが、Windowsには未対応である模様