LoginSignup
1
1

More than 5 years have passed since last update.

distutilsのlogが出ない問題

Last updated at Posted at 2016-10-08
  • distutilsはdistutils.logというモジュールでログの出力レベルを変えている。distutilsはsetup.pyから利用されるので、コマンドライン引数などはsetuptoolsに含まれるため、ユーザーが制御できない。しかし、このログレベルを変えるのは簡単ではないようだ
  • pipはsetup.py egg_infoをオプション引数なしで実行しており、この中でビルドが走り、問題があるとここで止まる。引数無しで実行しているため、ログレベルを変えられない。egg_infoっていかにもビルドとは違うことをしそうなものだが、ここで止まってしまうのはsetup.pyの書き方がまずいのかもしれない
    • 色々調べたら、cythonインストール問題で、build_extのfinalize_optionを無理やりいじったせいで、egg_infoでビルドが走ってしまってるのが原因だった。cython問題根深い・・・
  • setup.py install -vvv ではinstallコマンド用の引数を渡すことはできる。しかし、実際には中でsetuptoolsがeasy_installコマンドを実行しており、ここに-vvvの引数(verbose=3)は渡されない。その為、やはりログレベルを変えられない。ちなみに、この引数はsetuptools内でパースしていて、{'verbose': 3}に変換する。ただし、3はint
  • setup.cfgファイルにglobalという項目をつけると、setup.pyがここを読んで引数を足してくれる。しかし、 verbose = 3 を指定すると 3 が内部では文字列として扱われ、結局if文に引っかからずログレベルを変えられない
  • setup.py -vvv installすると実はログレベルを変えられる。コマンド名の前に指定したオプションはglobal-optionと呼ばれ、setuptoolsの全てのコマンドに追加される。そのため、easy_installに対してもこの引数は渡されるので、ログレベルを変えられる。ちなみに、pipのglobal-optionはこれに対応するようだが、上述したとおりegg_infoにはこの引数は渡されない
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1