スタック・オーバーフロー 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
ができています。
しかし、jupyter notebookでは import が成功するものの、tf.constant
を使った時点で AttributeError: module 'tensorflow' has no attribute 'constant'
というエラーが出てしまいます。
jupyter notebookはpipでインストールしており、その接続がうまくいってないようですがどうすればいいのかがわかりません。
Virtualenv下でjupyter notebookを起動すると
import tensorflow
ですらエラーがでるようになります。
Virtualenv の元で pip install jupyter
すると launchpadlib 1.10.5 requires testresources, which is not installed.
などのメッセージが出ます。
質問の前半について
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP