2016-08-10 14 views
0

私はだから私は...Pythonのサブプロセスから2つの同じ引数を渡すには?

# property_name = {'key': 'value'} 
y = ['--property={}:{}'.format(key, value) for key, value in property_name.items()] 
cmd = [ 
    './buildbot', 'sendchange', 
    '--branch={}'.format(
     branch), 
    y 
] 

を以下のプログラムを書いて、コマンドの上にサブプロセスでエラーがスローされます

./buildbot sendchange --branch=poky --property=buildname:nice --property=machine:qemux86 

...このようなサブプロセスの呼び出し...二つのパラメータを渡したいです!

./buildbot sendchange --branch=poky "--property=buildname:nice --property=machine:qemux86" 

は、だから私は何も悪いことをやっている...
Traceback (most recent call last): 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner 
    response = get_response(request) 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 249, in _legacy_get_response 
    response = self._get_response(request) 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in _get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/channels/handler.py", line 227, in process_exception_by_middleware 
    return super(AsgiHandler, self).process_exception_by_middleware(exception, request) 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 185, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/iaskin/Workspace/latest/local/lib/python2.7/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view 
    return view_func(request, *args, **kwargs) 
    File "/home/iaskin/Workspace/buildsys/build_app/views.py", line 93, in home 
    property_name=property_name 
    File "/home/iaskin/Workspace/buildsys/build_app/helper/build_agent.py", line 50, in submit_buildbot 
    output = subprocess.Popen(cmd, cwd=bb_master_dir) 
    File "/usr/lib/python2.7/subprocess.py", line 711, in __init__ 
    errread, errwrite) 
    File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child 
    raise child_exception 
TypeError: execv() arg 2 must contain only strings 

は、だから私はこの

y = ['--property={}:{}'.format(key, value) for key, value in property_name.items()] 
cmd = [ 
    './buildbot', 'sendchange', '--master=bsp-buildvm:9999', 
    '--branch={}'.format(
     branch), 
    "{}".format(' '.join(y)) 
] 

に上記のコードを変更し、これは私はしたくないのですか?または、subprocessは実際にこれを許可していないのですが、他の選択肢は何ですか?

答えて

0

親プロセスでは、環境変数として引数を保存します。子プロセスがそれにアクセスできます。

+0

こんにちは...もっと説明できますか?コードで変更する必要があるのは何ですか? –

+0

os.environ ['KEY'] = "my-personal-key" ---このタイプの構成は、環境変数を設定します。子プロセスはこれらの環境を継承できます。 – forvaidya

+0

envを設定したら、 'cmd'コードをどうやって変更できますか? –

関連する問題