アプリケーション(x64)にスクリプト環境として組み込まれているPython3.1.4を使用しています。これまでのところ、埋め込まれたPythonで多くの制限に遭遇しました。それが正常なのか、それともアプリケーションのプログラマーがいくつかの機能をブロックしたのかはわかりません。
たとえば、次のコードは機能していません。
from multiprocessing import Process
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
# --> error in forking.py: 'module' object has no attribute 'argv'
# print(sys.argv) gives the same error
sys.executable
アプリケーションへのパスを返します。
私はこれをウェルとして試しました:
multiprocessing.forking.set_executable('C:\Python31\python.exe')
multiprocessing.set_executable('C:\Python31\python.exe')
成功せずに。
可能な回避策はありますか?アプリケーションの開発者にコード内の何かを変更させるためのレバレッジを持っている可能性はほとんどありません。
ありがとう
編集
以下を追加することで動作させました。
sys.argv = ['c:/pathToScript/scipt.py']
私もこの行が必要でした:
multiprocessing.set_executable('C:/Python31/python.exe')
それ以外の場合は、コードを実行する代わりに、アプリケーションの他のインスタンスが開きます。
私が残した唯一の問題は、アプリケーション自体を制御するメソッド(create_project()、add_report()、..など)を使用できないことです。私の主な目標は、最初のメソッドが完了するのを待たずに、複数のメソッドを呼び出せるようにすることでした。しかし、これは不可能だと思います。