我正在使用作为脚本环境嵌入到应用程序(x64)中的 Python 3.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()、..)。我的主要目标是能够调用多个方法而无需等待第一个方法完成。但我认为这是不可能的。