kerneltyu’s blog

理系学生です.

OpenAI Gymの導入でOS Error: [Errno 1]が出てしまった

OpenAI Gym

以前から存在は知っていて使ってみたいなと思っていました。今回、輪講で出てきたこともあり輪講内容の理解を深めるためや今後の強化学習のアルゴリズムの勉強のためにもここで導入しようと踏み切りました!

しかし、導入しただけではここには書きません。途中でハマってしまいました。

基礎的なところかもですけど、Mac初心者にとって解決に時間かかる問題でした。

その途中で出たエラーと解決方法についてここに残しておきます。

導入までの流れは公式を見てください!とっても簡単そうです。多分ほとんどの人にとっては簡単。

PCスペック

f:id:kerneltyu:20170418123915p:plain

エラー 

Orion:gym kerneltyu$ pip install -e .

Obtaining file:///Users/kerneltyu/gym

Collecting numpy>=1.10.4 (from gym==0.8.1)

  Using cached numpy-1.12.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl

Collecting requests>=2.0 (from gym==0.8.1)

  Using cached requests-2.13.0-py2.py3-none-any.whl

Requirement already satisfied: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from gym==0.8.1)

Collecting pyglet>=1.2.0 (from gym==0.8.1)

  Using cached pyglet-1.2.4-py2-none-any.whl

Installing collected packages: numpy, requests, pyglet, gym

  Found existing installation: numpy 1.8.0rc1

    DEPRECATION: Uninstalling a distutils installed project (numpy) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.

    Uninstalling numpy-1.8.0rc1:

Exception:

Traceback (most recent call last):

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main

    status = self.run(options, args)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run

    prefix=options.prefix_path,

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 778, in install

    requirement.uninstall(auto_confirm=True)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 754, in uninstall

    paths_to_remove.remove(auto_confirm)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove

    renames(path, new_path)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/utils/__init__.py", line 267, in renames

    shutil.move(old, new)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move

    copy2(src, real_dst)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2

    copystat(src, dst)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat

    os.chflags(dst, st.st_flags)

OSError: [Errno 1] Operation not permitted: '/var/folders/81/gnsty4rn7cl0v5pvwt2xnj1c0000gn/T/pip-4A2FSu-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info'

 

結構書かれてますが、要はあなたがnumpy-1.8.0rc1をアンインストールする操作は許可されてませんよ〜ことですね。

なので単純にsudoつけてやりました。

 

Orion:gym kerneltyu$ sudo pip install -e .

The directory '/Users/kerneltyu/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

The directory '/Users/kerneltyu/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

Obtaining file:///Users/kerneltyu/gym

Collecting numpy>=1.10.4 (from gym==0.8.1)

  Downloading numpy-1.12.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.4MB)

    100% |████████████████████████████████| 4.4MB 259kB/s 

Collecting requests>=2.0 (from gym==0.8.1)

  Downloading requests-2.13.0-py2.py3-none-any.whl (584kB)

    100% |████████████████████████████████| 593kB 918kB/s 

Requirement already satisfied: six in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from gym==0.8.1)

Collecting pyglet>=1.2.0 (from gym==0.8.1)

  Downloading pyglet-1.2.4-py2-none-any.whl (964kB)

    100% |████████████████████████████████| 972kB 754kB/s 

Installing collected packages: numpy, requests, pyglet, gym

  Found existing installation: numpy 1.8.0rc1

    DEPRECATION: Uninstalling a distutils installed project (numpy) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.

    Uninstalling numpy-1.8.0rc1:

Exception:

Traceback (most recent call last):

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/basecommand.py", line 215, in main

    status = self.run(options, args)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/commands/install.py", line 342, in run

    prefix=options.prefix_path,

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_set.py", line 778, in install

    requirement.uninstall(auto_confirm=True)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_install.py", line 754, in uninstall

    paths_to_remove.remove(auto_confirm)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove

    renames(path, new_path)

  File "/Library/Python/2.7/site-packages/pip-9.0.1-py2.7.egg/pip/utils/__init__.py", line 267, in renames

    shutil.move(old, new)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move

    copy2(src, real_dst)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2

    copystat(src, dst)

  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat

    os.chflags(dst, st.st_flags)

OSError: [Errno 1] Operation not permitted: '/tmp/pip-Phs4aa-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info'

 

ダメじゃん...

そこで OSError: [Errno 1] のエラー解決しているページを探しました。そこで見つけたTensorflowの導入でハマって解決している記事を参考にしました。

pikurusux.hatenablog.com

解決策

この記事によると"--ignore-installed program name"のオプションが重要。僕の場合はnumpyだったので"--ignore-installed numpy"のオプションを付与して

"sudo pip install -e . --upgrade --ignore-installed numpy"を実行しました。

 

Orion:gym kerneltyu$ sudo pip install -e . --upgrade --ignore-installed numpy

The directory '/Users/kerneltyu/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

The directory '/Users/kerneltyu/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.

Obtaining file:///Users/kerneltyu/gym

Collecting numpy

  Downloading numpy-1.12.1-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.4MB)

    100% |████████████████████████████████| 4.4MB 249kB/s 

Collecting requests>=2.0 (from gym==0.8.1)

  Downloading requests-2.13.0-py2.py3-none-any.whl (584kB)

    100% |████████████████████████████████| 593kB 809kB/s 

Collecting six (from gym==0.8.1)

  Downloading six-1.10.0-py2.py3-none-any.whl

Collecting pyglet>=1.2.0 (from gym==0.8.1)

  Downloading pyglet-1.2.4-py2-none-any.whl (964kB)

    100% |████████████████████████████████| 972kB 762kB/s 

Installing collected packages: numpy, requests, six, pyglet, gym

  Running setup.py develop for gym

Successfully installed gym numpy-1.12.1 pyglet-1.2.4 requests-2.13.0 six-1.10.0

 

上手くいきました。

ハマった時に参考にしていください