Python 3.4の導入メモ - pipとpyvenv


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

Python 3.4をWindows 7にインストールしました。パッケージ管理周りの情報が錯綜してややこしいので、自分で調べたことをメモしておきます。 Installation & Packaging Tutorial — Python Packaging User Guide documentation を大いに参考にしています。

numpyパッケージをpipでインストールするところで詰まって、ワークアラウンドで対処しています。これで本当に正しいのか保証できません。

インストール

Python公式から"Download Python 3.4.1"をクリック。インストーラPython-3.4.1.msiがダウンロードされた。これはx86インストーラらしい。64bit版が欲しい場合はPython Release Python 3.4.1 | Python.orgまで潜る。

インストーラを実行してインストール。デフォルトではC:\Python34にインストールされる。

パッケージ管理ソフト

C:\Python34\Scriptsを見ると、はじめから以下のexeが用意されている。

  • easy_install.exe
  • easy_install-3.4.exe
  • pip.exe
  • pip3.4.exe
  • pip3.exe

easy_installもpipも両方パッケージ管理ソフトだが、最近ではpipを使うのが普通らしい。

diffをとると、easy_install.exeとeasy_install-3.4.exeはまったく同じバイナリだった。同様にpipで始まる3つのexeもすべて同じバイナリだった。

バージョンを調べると以下のように表示された。

C:\Python34\Scripts>easy_install --version
setuptools 2.1

C:\Python34\Scripts>pip --version
pip 1.5.6 from C:\Python34\lib\site-packages (python 3.4)

バーチャル環境の構築

pythonの関連パッケージを無防備にインストールしてしまうと、バージョン番号にまつわる地獄に引きずり込まれることになる。そこでバーチャル環境を作ってその中でパッケージをインストールするのが良い方法だといわれている。

バーチャル環境を作るためのコマンドにはvirtualenvとpyvenvがある。検索エンジンで多くヒットするのはvirtualenvだが、手動インストールが必要。pyvenvは、Python3.4ではデフォルトでC:\Python34\Tools\Scriptsにインストールされているので、ここではpyvenvを使う。

バーチャル環境を作るには、まず以下のコマンドを実行する。<DIR>にはお好みのパスを入れる。例えば"C:\python_virtual_env"とでも入れる。

pyvenv.py <DIR>

次に、<DIR>/Scriptsに移動してactivate.batを実行する。するとプロンプトの表記が変わる。これでバーチャル環境に入れた。

C:\python_virtual_env\Scripts>activate.bat
(python_virtual_env) C:\python_virtual_env\Scripts>

パッケージのインストール

ここからは好きなパッケージをバーチャル環境にインストールし放題。例えばwheelというパッケージを、pipを使って入れてみる。

(python_virtual_env) C:\python_virtual_env\Scripts>pip install wheel
Downloading/unpacking wheel
Installing collected packages: wheel
Successfully installed wheel
Cleaning up...

numpyのインストールではまる→対処

しかし、同じようにnumpyパッケージを入れようとしたら失敗してしまった。

...

    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.exe /nologo /INCREMENTAL:NO _configtest.obj /OUT:_configtest.exe /MANIFESTFILE:_configtest.exe.manifest
    Found executable C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\link.exe
    mt.exe -nologo -manifest _configtest.exe.manifest -outputresource:_configtest.exe;1
    Found executable C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe
    
    _configtest.exe.manifest : general error c1010070: Failed to load and parse the manifest. U_U!$kLdK
    ~[
    
    failure.
    removing: _configtest.c _configtest.obj
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\python_virtual_env\build\numpy\setup.py", line 239, in <module>
        setup_package()
      File "C:\python_virtual_env\build\numpy\setup.py", line 231, in setup_package
        setup(**metadata)
      File "C:\python_virtual_env\build\numpy\numpy\distutils\core.py", line 169, in setup

   (中略、大量のTracebackが続く)

      File "numpy\core\setup.py", line 682, in get_mathlib_info
        raise RuntimeError("Broken toolchain: cannot link a simple C program")

RuntimeError: Broken toolchain: cannot link a simple C program

----------------------------------------
Cleaning up...
...

Visual Studio周りのツールで正しいツールが選択されずにエラーとなっているような雰囲気。あれこれ調べた結果、Visual Studio 2010のExpress版をインストールしていると失敗しやすいようだ(?)

Numpy-discussion - Compiling NumPy on Windows for Python 3.3 with MSVC 2010で回答されている通り、

Python34\Lib\distutils\msvc9compiler.py の648行目を
`mfinfo = None`
に変更

することで、一応エラーなしでnumpyのインストールができた。しかしこのワークアラウンドで問題がないのか不明。

matplotlibのインストールではまる→回避

これで完璧! と思いpip install matplotlibすると、またもやエラーで止まる。

c:\python_virtual_env\build\matplotlib\src\ft2font.h(16) : fatal error C1083: include ファイルを開けません。'ft2build.h': No such file or directory

error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN\\cl.exe' failed with exit status 2

どうやら、ft2build.hという、FreeTypeライブラリで提供されるヘッダファイルがないとだめなようだ。これは別途OSにインストールしておく必要がある。pipは万能ではない…。

ここでとれる方法は大きく2つ。

どちらの方法でもうまくいくことを確かめた。しかしeasy_installは古いコマンドなので、下の方法がよいだろう。

ちなみにmatplotlibでは、公式で.whlが配布されていたことに後で気づいたので、上記のように「わざわざ非公式サイトからexeをDLしてwhlに変換」という手続きは不要であった。