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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

1回答

366閲覧

【Python】 jupyter notebookにおいて、Jupyter isortを使用したい

YU-TO

総合スコア2

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2023/06/07 00:02

編集2023/06/07 09:01

【目的】jupyter notebookにおいて、Jupyter isortを使用したい

【経緯】
import文の並び順のフォーマットをjupyter notebookで行いたいと思い、調べたら下記URLにたどり着きました。
https://github.com/benabel/jupyter-isort
に従って、
1:pip install isort
2:jupyter nbextension install https://github.com/benjaminabel/jupyter-isort/archive/master.zip --user
3:jupyter nbextension enable jupyter-isort-master/jupyter-isort
を実行したところ、下記画像の青枠ように機能を追加することができました。
しかし、機能は実行できず、赤枠のようにエラーが出てしまいます。

イメージ説明
【エラー】
isort extension
Error : AttributeError
module 'isort' has no attribute 'SortImports'

【調査・試したこと】
① isortとpythonの互換性に不一致は見られなかった
②「module 'isort' has no attribute 'SortImports'」の原因をChatGPTに質問したところ、pip install --upgrade isortを進められたが試しても改善が見られない
③ 画像のセル内のコードをUni.pyにして、ターミナル上でisort Uni.pyを実行したところ問題なく処理はできた(しかし、やりたいのは画像内青枠のボタンを使用した選択セルに対してのisort処理)
④ https://github.com/benabel/jupyter-isortのjupyter-isort.js「function code_exec_callback(msg)」を見ても、isortライブラリの問題(つまり、module 'isort' has no attribute 'SortImports')にしかないと考えてしまう。しかし、そうなると④の問題に戻る

<<< 質問 >>>
・エラーを改善し、この機能が使える方法を教えてください

よろしくお願いいたします。
(追記)nbextensionsのisort formatterは実行しても何も起きなかったです

*【環境】
Anaconda3, Windows11, python, jupyter notebook6.5.4、Anaconda Navigator2.4.1

*【nbextensionsの環境設定】
下記URLに従ってインストール
https://smile-jsp.hateblo.jp/entry/2020/10/04/200458

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

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

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

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

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

bsdfan

2023/06/07 10:07

jupyter-isort は長らく更新されていないようです。一方で isort は更新されていて、ver.5 で SortImports がなくなっています。 なので ver.4あたりのものにバージョンダウンすれば動くかもしれないですが、別の問題が出てくる可能性もあります。
YU-TO

2023/06/07 19:53

回答してくださりありがとうございます! 今後の参考のためにお聞きしたいのですが、「ver.5 で SortImports がなくなっています。」はどのように確認したのでしょうか? バ-ジョンの更新履歴を見れば、SortImports関数(isort.SortImports)の代替機能も案内していると思い、<https://pycqa.github.io/isort/CHANGELOG.html>を見てみたのですが、見当たらなかったので返答をいただければ幸いです。 もし、代替機能があれば<https://github.com/benabel/jupyter-isort>で取得したファイル:「jupyter-isort.js」内の関数「sort_imports(index)」で記述されている(var code_input = 'isort.SortImports(file_contents=' + text + ').output';)の(isort.SortImports)部分を代替機能の関数に置き換えれば機能するかもと考えています。
YU-TO

2023/06/07 19:54

インストールしたライブラリのバージョンダウンは諸事情でできないので上記の方法を試してみたいです。 お手数でなければ、よろしくお願い致します。
bsdfan

2023/06/08 00:05

「isort sortimports」で検索したら別アプリでの同じような問題が出てきて、ver.4 と ver.5 で互換性云々というコメントがありました。ご指摘の通り CHANGELOGにはその点の記載はなく、最終的にはgithubのソースコードで確認しています。 最新とver4とのREADMEを比較すると isort.code() に置き換えたらいけそうなので、試してみてはどうでしょう。 https://github.com/PyCQA/isort#using-isort https://github.com/PyCQA/isort/tree/4.3.21#using-isort 'isort.SortImports(file_contents=' + text + ').output' を 'isort.code(' + text + ')' かな?
YU-TO

2023/06/08 08:17

助言通りに「'isort.code(' + text + ')'」に書き換えたら、エラーが解消されてjupyter-isortをきちんと機能させることができました!! ご協力いただき本当にありがとうございます。 GitHub上での見方などもとても参考になりました。今後もスキルを磨いていきたいと思います! もしよろしければ回答でお返事をいただければ幸いです。
guest

回答1

0

ベストアンサー

※コメント欄でのやりとりをまとめておきます。

  • jupyter-isort は長らく更新されておらず、isort の更新に対応できていない。isort は、ver.5 で SortImports がなくなっているので、ver.4 にバージョンダウンすれば動くかもしれない。
  • 質問者さんは、バージョンダウンではなく、jupyter-isort のほうに手を入れて対応することを希望。
  • github で、ver.4 のころと最新の README を比較すると、isort.SortImports().output は isort.code() で置き換えられそう。
  • jupyter-isort.js で 'isort.SortImports(file_contents=' + text + ').output''isort.code(' + text + ')'

投稿2023/06/08 12:34

編集2023/06/08 12:37
bsdfan

総合スコア4560

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

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

YU-TO

2023/06/08 15:09

まとめまでしてくださって、ありがとうございます (^_^)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問