静かなる名辞

pythonとプログラミングのこと


エラー対処法

numbaとnumpy.emptyでbool配列が作れないとき

タイトル通りのことをやろうとして、なんかエラーになったんですよね。 import numpy as np from numba import jit @jit("b1[:]()", nopython=True) def f(): a = np.empty(100, np.bool) return a f() 動きそうに見えますが、 Traceback (most recent call …

Pythonの文字列メソッドとバイト列の微妙な関係

Python3になってからは普段あまり気にしなくても良いようになりましたが、Pythonの文字列っぽい型にはstrとbytesがあります*1。そして、strもbytesも同じようなメソッドを実装してくれています。組み込み型 — Python 3.8.2 ドキュメント組み込み型 — Python …

【python】UnboundLocalErrorの原因と対処法

はじめに 関数の中で関数の外の変数を操作するようなコードを書いていると、たまに下記のようなエラーが出ます。UnboundLocalError: local variable '***' referenced before assignment 初歩的ですが、意外とまとまった良い解説がないので、記事にしておき…

【python】キーワード引数と可変長キーワード引数(kwargs)の競合によるエラー

はじめに 既存の関数のwrapperを作るときなど、可変長キーワード引数を使いたいときがあります。 これは通常のキーワード引数と併用できますが、稀に問題になることがあります。 関数定義のとき 定義するときは割と単純で、問題も少ないです。 以下のような…

【python】code.pyも作っちゃだめだよという話

概要 実行時カレントディレクトリにcode.pyを置いておいたら訳のわからない落ち方をした。 現象 なんかimportしたらまともに動かなかった。調べると、pytest→pdb→codeという流れでimportして、自作のcode.pyはエラーが出るコードだったのでそこで止まってた…

TypeError: list indices must be integers or slices, not ***等の原因と対処法

はじめに pythonを触り始めたばかりの人は、よくこんなエラーに遭遇すると思います。 TypeError: list indices must be integers or slices, not *** ***の部分はfloatだったりlistだったりstrだったりといろいろありますが、とにかくこんなエラーです。 ま…

TypeError: '***' object is not subscriptableの対処法

はじめに Pythonを始めてからしばらく時間が経って、ある程度自力で複雑なプログラムを書くようになると、タイトルのようなエラーに遭遇することが多いと思います。 このエラーが出たときは、たいていはロジックに問題があります。一概に通用する対処法がな…

numpyやpandasでThe truth value of ... is ambiguous.のようなエラーが出たときの対処

numpyやpandasでThe truth value of ... is ambiguous.のようなエラーが出たときの対処 条件式を使って生成したようなboolのnumpy配列を使っていると、次のようなエラーが出ることがあります。また、pandasのSeriesやDataFrameでも同様のエラーが発生する場…

【python】windowsではopenの引数にフォルダを指定するとPermissionErrorになる

最近はじめて知った仕様なのですが、windowsではタイトルの通りになります。 Linuxの場合。 $ mkdir hoge $ python >>> open("hoge") Traceback (most recent call last): File "<stdin>", line 1, in <module> IsADirectoryError: [Errno 21] Is a directory: 'hoge' 大変</module></stdin>…

multiprocessing.PoolでAttributeError: Can't get attribute '***' on <module '__main__' from '***.py'>みたいなエラー

概要 multiprocessing.Poolで並列化じゃ! と調子に乗ってコードを書いていると表題のようなエラーに遭遇することがあります。 再現するコード。poolerrortest.py from multiprocessing import Pool p = Pool(2) def f(x): print(x) p.map(f, [1,2]) # 中略 …

ImportError: No module named 'sklearn.cross_validation'の対処

概要 sklearnで書籍やネットに掲載されているコードを実行した結果、表題のようなエラーが出ることがある。 一例をあげる。 >>> from sklearn.cross_validation import cross_val_score Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportErro</module></stdin>…

ループで辞書の要素を削除しようと思ったらRuntimeError: dictionary changed size during iteration

前提 ループで条件に従って辞書の全要素を舐め、条件が真になる要素を削除したい あくまでもin-placeで処理したい(今回はdel文で書いていた) 要するにこんなコード。 d = {v:"hoge!"*v for v in range(5)} # => {0: '', 1: 'hoge!', 2: 'hoge!hoge!', 3: '…

【python】missing 1 required positional argument: 'self'などの対処法

はじめに pythonに不慣れな方は、よくタイトルのようなエラーを見かけると思います。 実際には、このエラーはTypeErrorで、全体は以下のようなものです。 TypeError: メソッドの名前 missing 1 required positional argument: 'self' では、どうしてこのエラ…

【python】ImportError: No module named '***'の対処法

はじめに ライブラリをインストールして、いざ使おうと思ったら「ImportError: No module named '***'」が出ちゃった、という経験をされる方は多いと思います。 その対処法、トラブルシューティング手順についてまとめておきます。 なお、この記事はpipでイ…

【python】クラス変数のスコープには注意が必要

pythonでクラスを書くとき、一番多用するのは(恐らく)インスタンス変数ですが、クラス変数もたまに使います。 しかし、pythonのクラス変数にはちょっと「クセ」があります。リスト内包表記と組み合わせたときに問題になることが多いようです。 問題の例 リ…

emacsでpythonを書いているとき「arithmetic error」

tabキーでインデントしようとすると表題の通りのエラーが出て、インデントできない状況になった。 ググって出てきたのはここ。Indentation not working properly in emacs for python - Stack Overflow Check the value of python-indent-offset. If it is 0…

【python】flymakeのエラー

次のようなエラーを吐かれた。 Flymake: Configuration error has occurred while running(***/flymakes ***.py).Flymake will be switched OFF 原因 色々あるらしいけど、今回は文字コード指定をタイポした瞬間エラーが出た。 # coding: UTF-9 たぶん、これ…

【python】random.shuffleについて

はじめに 標準モジュールのrandom.shuffleは直感と違う挙動をするので、メモしておきます。 参考: 9.6. random — 擬似乱数を生成する — Python 3.6.5 ドキュメント 問題のコード このようなコードです。 import random lst = list(range(10)) shuffled = ra…