0

私はPythonの初心者で、GUIにはwxpythonを使用しています。

私の問題はこれです:

2 種類の製品 (製品 1 と製品 2 など) 用の debian ファイルを作成する必要があります。これは、README.package.creation ファイルを実行することで実行できます。「.bashrc」の「product1」については、変更する必要があります

                Product = product1 

その後、新しいターミナルで「make clean」を実行する必要があります (そうしないと、.bashrc の変更が反映されません。つまり、手順に従わない場合、「product」が「product 1」と等しくない可能性があります)。次に、実行する必要があります。 /Readme.package.creation.process. Readme.package.creation では、製品タイプを「製品 1」として自動的に取得します。これを手動で行うと正常に動作しますが、GUI でこれを行うと、Readme.package.creation ファイルは製品タイプを取得しません。Python から null 値が送信されます。私の問題を解決するのを手伝ってください。私のコードは次のとおりです。

      subprocess.call("sed -i '/export PRODUCT/d' .bashrc", shell=True)
      subprocess.call("sed -i '/export BOARD=TYpe/ a\ export PRODUCT=product1' .bashrc", shell=True)
      os.chdir("/home/x/y/z")
      subprocess.call("make clean", shell=True)
      os.chdir("/home/x/main/src/package")
      subprocess.call("sed -i 's/re.build -f -gui -p all/re.build -gui -p all -svn no/' README.package.creation", shell=True)
      subprocess.call("gksu debian", shell=True)
      subprocess.Popen("xfce4-terminal -e 'bash -c \"./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)

その後のやり方は、商品2も同じ手順を踏む必要があります

編集: Python の os.environ はどうですか? os.putenv で変更しようとしましたが、os.environ が正常に動作しないようです。

4

2 に答える 2

2

試す:

  import OS
  os.environ['product']='product1'
  subprocess.call("make clean", shell=True)

等々

于 2013-06-26T09:46:35.330 に答える
0

あなたの問題は非常に単純であり、解決策もそうです:.

subprocess.Popen(...)、コールを次のように変更します。

subprocess.Popen("xfce4-terminal -e 'bash -c \"./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)

に:

subprocess.Popen("xfce4-terminal -e 'bash -c \"source ~/.bashrc; ./README.package.creation -u %s\";sleep 10'" % (str(u_name)),shell=True)

基本的に、パッケージ作成コマンドを呼び出す前に、ファイルbashをソースするように求めています。.bashrc

別の例:

sgulati@precise:~$ cat /tmp/1.sh
export A=100
sgulati@precise:~$ python -c "import subprocess
print subprocess.Popen(['bash', '-c', 'source /tmp/1.sh; echo \$A'], stdout=subprocess.PIPE).stdout.read()"
100

この例では、変数を で宣言しA=100/tmp/1.shそれsourceを実行しecho $Aます。のためsource /tmp/1.sh、 の値はが実行さAれたときecho $Aにわかります。

この例で使用した構文は の構文ですpython 2.7.3が、どのように進めても概念はほとんど同じであることに注意してください。

于 2013-06-18T17:29:08.240 に答える