BLOGTIMES
2019/12/26

Windows 10 で Pyenv + Pipenv 環境を作る

  windows10  python  tutorial  powershell 
このエントリーをはてなブックマークに追加

Windows 10 上で Pyenv + Pipenv 環境を構築してみたのでメモ。
Linux と違ってあれこれ手動でやらなければならないことが多いので、なるべくコマンドラインから実行でできるようにまとめました。

pyenv-win のインストール

Windows 上で Pyenv を使うためには pyenv-win を使います。

基本的には Linxux の pyenv と一緒ですが、Python はソースからではなく Windows 用のインストーラで導入されます。
このため、

  • インストール中に GUI のインストールボタンを押す必要がある
  • アンインストールはコントロールパネルのプログラムと機能から行なう必要がある

ことに注意が必要です。

導入方法はサイトに解説されているとおりで、アップデートを考えると git を使う方が楽ですが、開発用のツールが何も入っていないすっぴんの Windows を対象にする場合には zip で入れるのが一番楽な方法になります。具体的には以下のコマンドを PowerShell で実行すればすんなり導入できるはずです。

# Download/Setup pyenv Set-Location $env:USERPROFILE Invoke-WebRequest -Uri https://github.com/pyenv-win/pyenv-win/archive/master.zip -OutFile master.zip Expand-Archive -Path master.zip -DestinationPath $env:USERPROFILE Rename-Item -path pyenv-win-master -newName .pyenv # Update pyenv-insatall Invoke-WebRequest -Uri https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/libexec/pyenv-install.vbs -OutFile $env:USERPROFILE\.pyenv\pyenv-win\libexec\pyenv-install.vbs # Add environment variables # (If you add "/M" at the end of line, it will be added to system environment variables.) SETX PYENV "$env:USERPROFILE\.pyenv\pyenv-win" SETX PATH "%PYENV%\bin;%PYENV%\shims;%PATH%;" SETX PIPENV_VENV_IN_PROJECT 1

Python と pipenv のインストール

続いて Pyton と pipenv を入れていきます。
このあたりは別段、Linux の時と変わりありませんね。

# Install python and pipenv pyenv install 3.7.5-amd64 pyenv global 3.7.5-amd64 pyenv rehash python -m pip install --upgrade pip pip install pipenv pyenv rehash

pipenv を使おうとするとエラーが出るので・・・・

Python と pipenv が導入できたので、さっそく使い始めたいところですが、pipenv でプロジェクトを初期化しようとすると、以下のようなエラーが出てしまいます。

・・・・・・・・・・・・・・・・・・・・ File "c:\users\h\.pyenv\pyenv-win\versions\3.7.5-amd64\lib\site-packages\pipenv\vendor\shellingham\nt.py", line 78, in _iter_process info = {'executable': str(pe.szExeFile.decode('utf-8'))} UnicodeDecodeError: 'utf-8' codec can't decode byte 0x95 in position 0: invalid start byte

この症状については、どうやら「The Python Dependency Tool · Ka's Blog」の内容と同じようなので、nt.py を以下のように書き換えてやると修正することができます。

info = {'executable': str(pe.szExeFile.decode('utf-8'))}
info = {'executable': str(pe.szExeFile.decode('utf-8', errors='ignore'))}

これもいちいちやるのが面倒なので、PowerShell から以下のコマンドを叩けば nt.py を自動的に探して修正を行なうようにしてみました。

$ntpy = (python -c "import site; from glob import glob; path = '\\pipenv\\vendor\\shellingham\\nt.py'; print(list(map(lambda x: x+path, list(filter(lambda x: glob(x+path), site.getsitepackages()))))[0])") $contents = $(Get-Content $ntpy) -replace "'utf-8'","'utf-8', errors='ignore'" $contents | Out-String | % { [Text.Encoding]::UTF8.GetBytes($_) } | Set-Content -Path $ntpy -Encoding Byte

ついでに C のコンパイラも入れておく

モジュールによってはコンパイラがないと行けない場合もあるので、Visual Studio 2019 for Windows および Mac のダウンロード から Build Tools for Visual Studio 2019 をダウンロードして入れておくと良いと思います。

これで、Windows でも Pyenv + Pipenv の快適な環境を満喫できます。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/11446
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン