会社用PC内にJupyterをインストールしている人など、
微妙に権限設定がめんどくさい人向け(自分にも向けて)Tensorflowのインストール時の備忘録です。
#1.普通にインストールしようとすると→失敗!
pip install tensorflow
↓
Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
wraptが悪さをしているようです。
#2.pip やcondaをアップデートしようとすると→失敗!
conda update -all
conda update wrapt
conda remove wrapt
↓
PermissionError(13, 'アクセスが拒否されました。')
1.のwraptに関するエラー文をそのまま検索すると「wraptのアップデート」「wraptの削除」で対応する方法の2つが出ましたが上記のエラー結果が出てアクセス権の影響でうまくいきません。
#3.既にinstallしてあるものを無視すると→失敗!惜しい
pip install tensorflow --ignore-installed
↓
Could not install packages due to an EnvironmentError: [WinError 5] アクセスが拒否されました。: 'C:\\ProgramData\\Anaconda3\\Lib\\site-packages\\easy_install.py'
Consider using the `--user` option or check the permissions.
既にインストールしてある ものを無視してTensorflowをインストールすると、似たようなエラーが出ましたが「--userを利用してみては?」というレコメンドを貰いました
#4.--userオプション付けると→成功!
pip install tensorflow --ignore-installed --user
↓
#成功!
Successfully installed absl-py-0.7.1 astor-0.8.0 gast-0.2.2 google-pasta-0.1.7 grpcio-1.23.0 h5py-2.9.0 keras-applications-1.0.8 keras-preprocessing-1.1.0 markdown-3.1.1 numpy-1.17.0 protobuf-3.9.1 setuptools-41.1.0 six-1.12.0 tensorboard-1.14.0 tensorflow-1.14.0 tensorflow-estimator-1.14.0 termcolor-1.1.0 werkzeug-0.15.5 wheel-0.33.6 wrapt-1.11.2
結論、既にインストールしてあるライブラリを無視してかつ「--user」オプションをつけることでインストールが上手くいきました。
この他にも「pip自体のアップデート」もありましたがアクセス権の影響でうまくいきませんでした。
少ないと思いますが同様な事象で悩んでいる方はぜひお試しください。
#20201216追記
#module 'tensorflow.python.framework.ops' has no attribute '_TensorLike'エラー
tesorflow1系でプログラム作成した人がtensorflow2系にアップグレードした際にはまるエラーっぽい。
回避策はあまりネットにも載っていない。唯一下記が参考になり得そう。
importの書き方を工夫すればおそらく解消される。
https://medium.com/@softkaai/attributeerror-module-tensorflow-python-framework-ops-716cc0f574f
面倒くさい人は下記でtensorflowを戻してしまう
回避策
①tensorflowをuninstall
conda uninstall tensorflow
②tensorflow1.14.0をinstall(おそらくtensorflow1系なら問題ない)
conda install tensorflow==1.14.0
➂その後、kerasを再インストール
(keras入っていてもimportエラーが起こることがあるのでkeras利用する人は下記を実行)
conda install keras
上記で解決