[英]Python - Can't subprocess.call after os.fork()
我有一个分叉的python进程,需要执行另一个python脚本。 我在OpenWRT中使用python 2.7。
Traceback (most recent call last):
File "./twitter.py", line 61, in <module>
subprocess.call(['./tweet.py', text])
File "/usr/lib/python2.7/subprocess.py", line 493, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
这是我分叉过程的方式:
try:
pid = os.fork()
print pid
if pid > 0:
# Exit parent process
sys.exit(0)
except OSError, e:
self.logger("Fork failed")
sys.exit(1)
这是我尝试调用另一个脚本的方法:
subprocess.call(['./tweet.py', text])
OSError: [Errno 2] No such file or directory
这个错误是说Python无法找到./tweet.py
文件。 默认情况下,Python查找当前工作目录,即从中调用脚本的目录。 请注意,这可能与脚本所在的目录不同。
尝试提供一个绝对路径,或使用os.chdir
改变包含目录tweet.py
,或基于其关系构建的路径__file__
,调用脚本的路径。 例如,如果tweet.py
与调用脚本位于同一目录中,则可以使用:
tweetpath = os.path.join(os.path.dirname(__file__), 'tweet.py')
subprocess.call([tweetpath, text])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.