TransWikia.com

jupyter notebookでtensorflowが起動しません。

スタック・オーバーフロー Asked on September 1, 2021

OSはubuntu17.10です。
https://www.tensorflow.org/install/install_linux
にあるとおり通りにVirtualenvにtensorflowをインストールし、ターミナルで動かすことに成功しています。具体的には、import tensorflow as tf が成功した上で、tf.constant を使った簡単な sess.run ができています。

ターミナルでtensorflowを動かしたときの画像

しかし、jupyter notebookでは import が成功するものの、tf.constant を使った時点で AttributeError: module 'tensorflow' has no attribute 'constant' というエラーが出てしまいます。

jupyterで動かしたときの画像

jupyter notebookはpipでインストールしており、その接続がうまくいってないようですがどうすればいいのかがわかりません。

Virtualenv下でjupyter notebookを起動すると

import tensorflow

ですらエラーがでるようになります。

Virtualenv の元で pip install jupyter すると launchpadlib 1.10.5 requires testresources, which is not installed. などのメッセージが出ます。

Virtualenvでjupyterをインストールしたときの画像

One Answer

質問の前半について

Pythonではモジュールをインポートするとき、ビルトインモジュール、sys.path にあるディレクトリのリストの順で名前を探します。

単にimportするだけでは、別の環境にあるパッケージを呼び出すことはないのでエラーになります。どうしても呼び出したい場合には、以下のようにtensorflowパッケージがあるディレクトリを sys.path に追加することで、tensorflowをインポートできるようになります。

import sys
sys.path.append('pathto/site-packages')

下の文章が気になりますが、tensorflow.pyというファイルやtensorflowというディレクトリをカレントディレクトリ等検索がされるディレクトリに作成してないでしょうか。もし、作成していればimport tensorflowでインポートされているのはそのファイルやディレクトリになり、本来のtensorflowのパッケージが読み込まれないことになります。

jupyter notebookでは import が成功するものの

インポートされたモジュールのpathは、以下のコマンドで表示できるので、確認した方がいいでしょう。

print(tensorflow.__path__)    

質問の後半について

質問にあるマニュアルどうりにインストールすると以下のようにインストール済みモジュールを使用するという設定になっています。

virtualenv --system-site-packages -p python3

ところが Ubuntu 18.04 では、そうすると質問に記載されたのと同じような問題が発生します。GitHubのpipの方にも問題が上がっています。Ubuntu17.10 でも同じ問題が発生していると思われます。

取り敢えずこのエラーを無くすためには、仮想環境を作るときにインストール済みモジュールを使わない設定にすればいいです。

virtualenv -p python3

Answered by Yasuhiro Niji on September 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP