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

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

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

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

Q&A

解決済

2回答

2723閲覧

pythonのidleでopenpyxlをimportしたい(python 3.10.0)

_navi_7

総合スコア2

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Python

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

0グッド

0クリップ

投稿2021/10/30 17:21

前提・実現したいこと

前提 使用しているpc macOS Catalina バージョン10.15.7

実現したいこと pythonのidleでopenpyxlをimportしたい(python 3.10.0)

発生している問題・エラーメッセージ

python自動処理の教科書という本をもとにpythonのidleの方でopenpyxlをimportしたいのですが以下のエラーが発生してしまいopenpyxlが正常にインストールされているか確認できないです。パソコンやプログラミングに詳しくないため、なにか初歩的なミスをしていたら申し訳ございません。。

エラーメッセージ import openpyxl openpyxl._version_ Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> openpyxl._version_ AttributeError: module 'openpyxl' has no attribute '_version_'

該当のソースコード

ソースコード

試したこと

https://teratail.com/questions/326861
こちらのページを参考にして

import sys
print(sys.executable)

をidleの方で打ち込んでみました。その後ターミナルの方で

/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10

を打ち込んでみると

WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available.
You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install --upgrade pip' command.

と表示されたのでpipのバージョンをアップグレードして、再度

/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10

を打ち込んでみたのですがまた同じエラーが出てしまいました。pipのバージョンを

pip -V

で確認すると

pip 21.3.1 from /Users/〇〇/.pyenv/versions/3.10.0/lib/python3.10/site-packages/pip (python 3.10)

と表示され

pip list

で確認すると

Package Version


et-xmlfile 1.1.0
jdcal 1.4.1
openpyxl 3.0.4
pip 21.3.1
setuptools 57.4.0

と表示されました。pipのバージョンはうまくグレードアップできているように見えるのですが先ほどの

/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10

を打ち込んでも同じ内容のwarningと書かれたエラーが出てきてしまいます。どのようにすれば正常にidleの方でopenpyxlをインポートできますか?また、このpipのバージョンを新しいバージョンで実行することができればidleの方でインポートができるという認識で合っていますか?

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

etherbeg

2021/10/31 13:22

> その後ターミナルの方で > > /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 > > を打ち込んでみると > > WARNING: You are using pip version 21.2.3; however, version 21.3.1 is available. > You should consider upgrading via the '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install --upgrade pip' command. > > と表示された とのことですが、通常、ターミナルで  /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 とだけ打ち込んでも、Pythonインタプリタが対話モードで起動するだけで、勝手に pip コマンドが実行されることはありません。ここに書かれていることは事実ですか? 事実なら正常ではありません。
guest

回答2

0

ベストアンサー

Python3.10が2個インストールされています。以下の2個です。
(a) /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10
(b) /Users/〇〇/.pyenv/versions/3.10.0/python (python3.10かもしれません)

IDLEが動いているのは、(a)のPythonです。

単にpipというコマンドを使うと、それは(b)のPythonを呼び出して

Python

1$ /Users/〇〇/.pyenv/versions/3.10.0/python -m pip

を実行します。

そのため、更新や確認をしようとして実行した

Python

1$ pip install --upgrade pip 2$ pip install openpyxl 3$ pip -V

などは

Python

1$ /Users/〇〇/.pyenv/versions/3.10.0/python -m pip install --upgrade pip 2$ /Users/〇〇/.pyenv/versions/3.10.0/python -m pip install openpyxl 3$ /Users/〇〇/.pyenv/versions/3.10.0/python -m pip -V

となります。つまり、(b)のPython側での更新や確認になってしまいます。

(a)のPython側で更新や確認をやりたい場合は、以下のようにしてください。

Python

1$ /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install --upgrade pip 2$ /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install openpyxl 3$ /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip -V

投稿2021/10/30 22:35

ppaul

総合スコア24666

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

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

_navi_7

2021/10/31 02:43

返信ありがとうございます。重ね重ね質問する形になってしまいます。申し訳ございません。。 回答者様の回答によりますと、私のpcには (a)/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 (b) /Users/〇〇/.pyenv/versions/3.10.0/python の2つのPythonがインストールされており、ターミナルの方で確認したpipのバージョンは(b)の方のpythonを表示しており、idle側で動く(a)のpythonは更新されておらず /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 を打ち込んでも、更新されていないidle側で動く(a)のpythonではエラーが出てしまう。そこでidle側で動く(a)のpythonの更新をするために /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install --upgrade pip /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip install openpyxl /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 -m pip -V で更新すると、 /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 がエラーなく読み込まれる。という認識で合っていますか? 実際に、(a)のPython側を更新し /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 を打ち込んだところエラーが発生することなく Requirement already satisfied: openpyxl in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (3.0.9) Requirement already satisfied: et-xmlfile in /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages (from openpyxl) (1.1.0) という結果がターミナル から得られました。その後、idleの方で正常にインストールされているか確認しようと import openpyxl openpyxl.__version__ と打ち込むと Traceback (most recent call last): File "<pyshell#12>", line 1, in <module> openpyxl.__version__ AttributeError: module 'openpyxl' has no attribute '__version__' とエラーが出てしまいました。ターミナルで、idleで動くpythonのバージョンを更新したにも関わらずidleの方でエラーが出てしまう原因は何が考えられるでしょうか。
ppaul

2021/10/31 08:18

それならば、以下である可能性があります。 使っているファイル自身の名前がopenpyxl.pyである 使っているファイルと同じフォルダにopenpyxl.pyがある、またはopenpyxlという名前のディレクトリがある。これを確認するために、 import openpyxl print(openpyxl) を実行してその結果を見てください。 それが自分で作ったディレクトリかファイルであれば、その名前を変更しましょう。
_navi_7

2021/10/31 15:39

回答ありがとうございます。無事インポートできました! 手順として、 import openpyxl print(openpyxl) で確認した後、ファイル名がopenpyxlのものをopenpyxl_fileと名前を変更し、idleで import openpyxl を実行すると https://teratail.com/questions/326861 こちらのページのように Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> import openpyxl ModuleNotFoundError: No module named 'openpyxl' のエラーが発生し、あとはページを参考に手順を踏み、idle上でopenpyxlをインポートすると import openpyxl openpyxl.__version__ '3.0.9' と結果が表示されました。 丁寧に回答していただき、また解決に導いてくださりありがとうございました。
guest

0

~ $ python Python 3.9.7 (default, Oct 24 2021, 14:37:03) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import openpyxl >>> openpyxl.__version__ '3.0.9' >>> openpyxl._version_ Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'openpyxl' has no attribute '_version_' >>>

投稿2021/10/30 18:01

technocore

総合スコア7247

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問