Prelude> import Data.Ratio Prelude Data.Ratio> numerator (1 % 3) 1 Prelude Data.Ratio> denominator (1 % 3) 3 Prelude Data.Ratio> 1 / 3 :: Rational 1 % 3 Prelude Data.Ratio> 3 / 3 :: Rational 1 % 1
numeratorが分子 denominatorが分母
Prelude> import Data.Ratio Prelude Data.Ratio> numerator (1 % 3) 1 Prelude Data.Ratio> denominator (1 % 3) 3 Prelude Data.Ratio> 1 / 3 :: Rational 1 % 3 Prelude Data.Ratio> 3 / 3 :: Rational 1 % 1
numeratorが分子 denominatorが分母
SOAP サポートを有効にするには、--enable-soap を指定
とあるので、
yum install php --enable-soap
とかやれば、soapサポートのあるPHPが入る。と思われる。
import subprocess cmd = "ruby --version" subprocess.Popen( cmd, shell=True ) cmd = "emacs --version" subprocess.Popen( cmd, shell=True )
片方はrbenvで、もう片方は野良ビルドでビルドしたもので、環境変数は設定してあるから、上記のプログラムだとrbenvやら野良ビルドしたものやらのバージョンが表示されるはず。
いずれも/usr/bin/の下のrubyとemacsのバージョンが表示される
悲しい。原因は?
@shigemk2 環境変数が引き継がれていない?
— なんつってつっちゃった (@masami256) 2015, 7月 12
@shigemk2 pathの検索順はPATHによるので、そこが引き継がれていなくて期待した動作になっていかなーと。
— なんつってつっちゃった (@masami256) 2015, 7月 12
@shigemk2 PATHの検索順はPATHの設定通りなはずです。なので、PATHがどうなってるのか表示させたほうが早いと思います。
— なんつってつっちゃった (@masami256) 2015, 7月 12
17.1. subprocess — サブプロセス管理 — Python 2.7ja1 documentation
たぶんPATHの設定が引き継がれていないのが原因ではないかなと。本当はソースコード本体を追っかけていくのが常道なのかもしれないけど、PATHの中身を見てもrbenvの設定は先頭の方に設定されているので、たぶん違うんじゃないかなって。
同じプログラムを3.4.3で試してみる。
import subprocess cmd = "ruby --version" subprocess.Popen( cmd, shell=True ) cmd = "emacs --version" subprocess.Popen( cmd, shell=True )
こんどはちゃんとうまくいく。
たぶん、subprocess.Popenのこの問題は既知の問題で、既に解決されているものなんだろうねって思ったり思わなかったりしている。