我正试图在我的可可应用程序中运行swift的python脚本.
脚本确实运行但有一些错误.
当我从终端运行该文件时,脚本工作正常,没有错误.
这是运行python文件的代码:
let process = Process()
process.launchPath = "/usr/bin/python"
process.currentDirectoryPath = "\(NSHomeDirectory())" + "/tmp"
process.arguments = [path.stringByAppendingPathComponent("pacman.py")]
process.launch()
Run Code Online (Sandbox Code Playgroud)
当我尝试使用Process()从我的应用程序运行python文件时,我收到的错误是:
Traceback (most recent call last):
File "/Users/fflorica/Library/Developer/Xcode/DerivedData/Taylor-acpgvfjjherixnfchbrbrayxxvsm/Build/Products/Debug/Taylor.app/Contents/Frameworks/TaylorFramework.framework/Resources/pacman.py", line 439, in <module>
g = Game()
File "/Users/fflorica/Library/Developer/Xcode/DerivedData/Taylor-acpgvfjjherixnfchbrbrayxxvsm/Build/Products/Debug/Taylor.app/Contents/Frameworks/TaylorFramework.framework/Resources/pacman.py", line 251, in __init__
self._init_curses()
File "/Users/fflorica/Library/Developer/Xcode/DerivedData/Taylor-acpgvfjjherixnfchbrbrayxxvsm/Build/Products/Debug/Taylor.app/Contents/Frameworks/TaylorFramework.framework/Resources/pacman.py", line 280, in _init_curses
curses.cbreak()
error: cbreak() returned ERR
Traceback (most recent call last):
File "/Users/fflorica/Library/Developer/Xcode/DerivedData/Taylor-acpgvfjjherixnfchbrbrayxxvsm/Build/Products/Debug/Taylor.app/Contents/Frameworks/TaylorFramework.framework/Resources/pacman.py", line 450, in <module>
raw_input()
EOFError
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
编辑:过去我使用了system()函数:
system("cd " + path)
system("python " + path + "/pacman.py")
Run Code Online (Sandbox Code Playgroud)
然后,我使用NSTask,它工作得非常好.
现在,NSTask是Process,我在使用Process时遇到了这些错误.
API中没有太多修改,但不知何故,它不起作用.
编辑1:经过一番调查后,我认为问题可能是因为进程在后台启动了一个新进程,这就是为什么python会将错误归咎于此,但我不确定.
| 归档时间: |
|
| 查看次数: |
2334 次 |
| 最近记录: |