OpenAI Gymの導入でOS Error: [Errno 1]が出てしまった
OpenAI Gym
以前から存在は知っていて使ってみたいなと思っていました。今回、輪講で出てきたこともあり輪講内容の理解を深めるためや今後の強化学習のアルゴリズムの勉強のためにもここで導入しようと踏み切りました!
しかし、導入しただけではここには書きません。途中でハマってしまいました。
基礎的なところかもですけど、Mac初心者にとって解決に時間かかる問題でした。
その途中で出たエラーと解決方法についてここに残しておきます。
導入までの流れは公式を見てください!とっても簡単そうです。多分ほとんどの人にとっては簡単。
PCスペック
エラー
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の導入でハマって解決している記事を参考にしました。
解決策
この記事によると"--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
上手くいきました。
ハマった時に参考にしていください