tl; dr

  • ctrutil disabledで/bin/pipを実行できるようにした
  • zlibをインストールした
  • LDFLAGS=-L/usr/local/opt/zlib/lib CPPFLAGS=-I/usr/local/opt/zlib/include PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig pyenv install 3.5.1でインストール

発生した課題

  • pip install --upgrade pipが使えない
  • pyenvでpython3.5.1をインストールできない

やってみたこと

python -m pip install --upgrade --force-reinstall pip で強制アップデートしてみようとしたが、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
Collecting pip
  Using cached pip-9.0.0-py2.py3-none-any.whl
Installing collected packages: pip
  Found existing installation: pip 7.1.2
    Uninstalling pip-7.1.2:
Exception:
Traceback (most recent call last):
  File "/Users/kotamat/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/shutil.py", line 538, in move
    os.rename(src, real_dst)
PermissionError: [Errno 13] Permission denied: '/Users/kotamat/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages/pip-7.1.2.dist-info/DESCRIPTION.rst' -> '/var/folders/qf/q28hqmj54hnb054fj97rwcl40000gn/T/pip-3wy6zsy1-uninstall/Users/kotamat/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages/pip-7.1.2.dist-info/DESCRIPTION.rst'

とでてしまった。sudoとやってしまっても/bin/pipへの権限が無いと怒られる始末。

これはmacのSIPのせいなので、下記を参考にdisabledに。 http://berukann.hatenablog.jp/entry/2015/12/30/123020

再起動して実行してみたところ、

1
2
3
4
5
6
7
8
Collecting pip
  Downloading pip-9.0.0-py2.py3-none-any.whl (1.3MB)
    100% |████████████████████████████████| 1.3MB 278kB/s
Installing collected packages: pip
  Found existing installation: pip 7.1.2
    Uninstalling pip-7.1.2:
      Successfully uninstalled pip-7.1.2
Successfully installed pip

とでているのに

1
2
$ pip install percol
pyenv: pip: command not found

pipはインストールされておらず。。

仕方ないのでpyenvでpythonを再インストールしてみようと試みるが、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
Last 10 log lines:
  File "/private/var/folders/qf/q28hqmj54hnb054fj97rwcl40000gn/T/python-build.20161105190035.4540/Python-3.5.1/Lib/ensurepip/__main__.py", line 4, in <module>
    ensurepip._main()
  File "/private/var/folders/qf/q28hqmj54hnb054fj97rwcl40000gn/T/python-build.20161105190035.4540/Python-3.5.1/Lib/ensurepip/__init__.py", line 209, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/qf/q28hqmj54hnb054fj97rwcl40000gn/T/python-build.20161105190035.4540/Python-3.5.1/Lib/ensurepip/__init__.py", line 116, in bootstrap
    _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/qf/q28hqmj54hnb054fj97rwcl40000gn/T/python-build.20161105190035.4540/Python-3.5.1/Lib/ensurepip/__init__.py", line 40, in _run_pip
    import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

と出てしまった。

zlibを入れてみると

1
2
3
4
5
6
7
8
$ brew update zlib

....

This formula was found in a tap:
homebrew/dupes/zlib
To install it, run:
  brew install homebrew/dupes/zlib

とのことなのでコマンド変えて再実行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ brew install homebrew/dupes/zlib

...

This formula is keg-only, which means it was not symlinked into /usr/local.

macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:

    LDFLAGS:  -L/usr/local/opt/zlib/lib
    CPPFLAGS: -I/usr/local/opt/zlib/include
    PKG_CONFIG_PATH: /usr/local/opt/zlib/lib/pkgconfig

何やらあやしいパラメータが。。

これを指定してみる

1
2
3
4
5
6
7
$ LDFLAGS=-L/usr/local/opt/zlib/lib CPPFLAGS=-I/usr/local/opt/zlib/include PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig pyenv install 3.5.1

Downloading Python-3.5.1.tgz...
-> https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Installing Python-3.5.1...
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.5.1 to /Users/kotamat/.anyenv/envs/pyenv/versions/3.5.1

お、インストール出来ている。

1
2
$ pip -V
pip 7.1.2 from /Users/kotamat/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages (python 3.5)

pipも無事インストールできた🙌