質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

6677閲覧

エラーの原因がわかりません。pythonに定義したのに定義してないって言われます。

doz13189

総合スコア38

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/07/17 10:33

編集2016/07/17 11:07

環境:ubuntu
同じ内容のコードを、端末上で走らせると実行されるのに、ファイル.pyで読み込むとエラーがでます。
なぜでしょうか?

python3

1from pandas.io.data import DataReader 2from datetime import datetime 3 4end = datetime.now() 5start = datetime(end.year - 1, end.month, end.day) 6toyota = DataReader('TM', 'yahoo', start, end) 7 8toyota.head()

このコードを端末からpythonを起動させて、実行するとエラーなく処理されます。

>>> from datetime import datetime >>> >>> end = datetime.now() >>> start = datetime(end.year - 1, end.month, end.day) >>> toyota = DataReader('TM', 'yahoo', start, end) >>> >>> toyota.head() Open High Low Close Volume Adj Close Date 2015-07-17 134.699997 135.490005 134.699997 135.360001 186100 135.360001 2015-07-20 135.789993 136.110001 135.410004 135.539993 352500 135.539993 2015-07-21 134.910004 135.029999 134.149994 134.559998 200500 134.559998 2015-07-22 133.800003 134.429993 133.800003 133.990005 196400 133.990005 2015-07-23 133.690002 133.919998 133.080002 133.250000 196100 133.250000 >>>

しかし、同じ内容をファイル.pyに上書きして、端末からファイルを読み込むとエラーがでます。

python

1Traceback (most recent call last): 2 File "reader.py", line 12, in <module> 3 toyota = DataReader('TM', 'yahoo', start, end) 4NameError: name 'DataReader' is not defined 5

DataReaderは定義されてないとエラーがでてくるのですが、端末上では問題なく処理されるので、定義されていないわけではないと思います。
なぜこのようなことが起こるのでしょうか?解決策はありますか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

お使いの環境にPythonが複数インストールされているということはありませんか?

投稿2016/07/17 11:07

編集2016/07/17 11:08
yukkeorg

総合スコア985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doz13189

2016/07/17 11:09

Python2系とPython3系どちらも入っています! pipでモジュールをインストールするときは、どちらの、とかは指定せずにインストールしています。 これが原因なのでしょうか??
yukkeorg

2016/07/17 11:23

今のUbuntuですと、特に指定しなかった場合pipは2.7(OSにもともと入っていたPython)が対象になるかと思います(但し、pyenv、virtualenv等のPython環境切替えツール等を使っていた場合は除きます)。なので、巻末からの直接実行しているパターンと.pyファイルにして実行しているパターンとで、実行しているPythonが違うのではないかなという推測でコメントしました。 参考に、端末から直接Pythonを起動して実行する場合と、ファイルに保存してから実行する場合のコマンドを教えてもらえますでしょうか。
doz13189

2016/07/17 11:47

回答ありがとうございます!! こちらのコマンドが端末からファイルを読み込んで、実行した場合です。エラーが出ています。 user@user-CF-SX1GE2DC:~/kabu/venv$ python2 reader.py Traceback (most recent call last): File "reader.py", line 12, in <module> toyota = DataReader('TM', 'yahoo', start, end) NameError: name 'DataReader' is not defined こちらのコマンドが直接端末から入力して実行した場合です。長いですが、ご容赦ください。 エラーは出ていません。途中の警告文は、将来モジュールが削除されます、という内容なので直接は関係ないと思います。 user@user-CF-SX1GE2DC:~/kabu/venv$ python2 Python 2.7.11+ (default, Apr 17 2016, 14:00:29) [GCC 5.3.1 20160413] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from pandas.io.data import DataReader /usr/lib/python2.7/dist-packages/pandas/io/data.py:33: FutureWarning: The pandas.io.data module is moved to a separate package (pandas-datareader) and will be removed from pandas in a future version. After installing the pandas-datareader package (https://github.com/pydata/pandas-datareader), you can change the import ``from pandas.io import data, wb`` to ``from pandas_datareader import data, wb``. FutureWarning) >>> from datetime import datetime >>> >>> end = datetime.now() >>> start = datetime(end.year - 1, end.month, end.day) >>> toyota = DataReader('TM', 'yahoo', start, end) >>> toyota.head() Open High Low Close Volume Adj Close Date 2015-07-17 134.699997 135.490005 134.699997 135.360001 186100 135.360001 2015-07-20 135.789993 136.110001 135.410004 135.539993 352500 135.539993 2015-07-21 134.910004 135.029999 134.149994 134.559998 200500 134.559998 2015-07-22 133.800003 134.429993 133.800003 133.990005 196400 133.990005 2015-07-23 133.690002 133.919998 133.080002 133.250000 196100 133.250000 >>>
yukkeorg

2016/07/17 12:28 編集

エラー内容のご提示ありがとうございます。 申し訳ないのですが、あと二つだけ教えて欲しいことがあります。 1) なにかWebや書籍の記事を参考にされましたでしょうか。 2) ファイル読込エラーメッセージでエラーが出たところは12行めとありますが、端末で入力しているものと行数が合いません。もし可能でしたらreader.pyの内容もどこかに提示してもらうことは可能でしょうか。 よろしくお願いします。
yukkeorg

2016/07/17 12:26

1) としなければいけないところを !) と記述してしまっていたのを修正
yukkeorg

2016/07/17 12:28 編集

↑すみません、ひとつ上のコメントは無視してください。
doz13189

2016/07/17 12:36

何度もありがとうございます!! 参考にしたのは下記のWebサイトです。 http://hirotsuru.hatenablog.com/entry/2016/05/17/190404 reader.pyの内容はこれです。 from pandas.io.data import DataReader from datetime import datetime end = datetime.now() start = datetime(end.year - 1, end.month, end.day) toyota = DataReader('TM', 'yahoo', start, end) toyota.head() 全く気づいていなかったのですが、line 12はありません! 全部でline 7までです。
yukkeorg

2016/07/17 13:33

自分のPCの仮想環境にUbuntuを入れて試してみた感じではファイルでも端末上でも問題なく動作しました。上記のエラー内容にvenvとあったので、virtualenvを利用していることを想定しています。以下URL(Pastbin)に実行内容を掲載していますので確認してみてください。 http://pastebin.com/6fsi21Hw
yukkeorg

2016/07/17 14:47

もし、自分がやったのとここが違うという手順があれば教えてください、
doz13189

2016/07/17 14:53

わざわざ本当にありがとうございます!! 手順の中で特に違う点は見つかりませんでした。 もう少し、ご指摘があった点を重点的に見てみます。
doz13189

2016/07/17 15:25

解決しました。 Pastebinの記載どおりの手順を踏んだら、上手くいきました。 本当にありがとうございます!!!!
yukkeorg

2016/07/17 15:43

お疲れ様でした。解決したようでよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問