[英]can't open file : [Errno 2] No such file or directory
当子进程调用进程 newtest.py 时出现以下错误。 代码作为守护进程运行。 当我启动守护进程时,进程被调用,它工作正常并且在开始给出错误之前运行了 8 个进程,然后在每次调用时都会发生错误。 错误是
/opt/local/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python: can't open file 'newtest.py': [Errno 2] No such file or directory
代码如下:
for index,row in enumerate(jobs):
if index <= new_jobs :
dirs=row[0]
dirName=os.path.join(homeFolder,dirs)
logFile=os.path.join(dirName,(dirs+".log"))
proc=subprocess.Popen(["/opt/local/bin/python2.6","newtest.py",dirs],stdout=open(logFile,'a',0),stderr=open(logFile,'a',0))
proId= proc.pid
我尝试使用 newtest.py 的完整路径,但它给出了同样的错误。 有什么建议么? 非常感谢!
尝试:
subprocess.Popen(['/opt/local/bin/python2.6','/FULL/PATH/TO/FILE/newtest.py'],stdout=subprocess.PIPE)
那样有用吗? 删除参数,什么不删除。
另外,您可以执行以下操作:
f = open('/FULL/PATH/newtest.py')
print f
我不记得我是否曾在 Linux 系统上受此影响,但我在 MacOS 上出现了同样的错误。
我想我已经解决了; 您应该更改为您在分叉过程中所在的目录。 我在类似/Users/me/dev/project/
的地方,正在运行bin/my-daemon start
。
在代码中,在 daemonize 方法的顶部,我将cwd = os.getcwd()
调用到一个变量,然后在 fork 中调用os.chdir(cwd)
。
已经半个多小时了,通常守护进程现在会引发No such file or directory
错误,但它没有。 如果您的 pid 文件使用的是绝对路径 ( /var/run/my.pid
),这可能不是问题,但我正在相对于我的项目使用它,因为我可能没有写权限,并且用户可以指定到哪里写下来。
编辑:刚刚意识到这个问题有多老,OP 的代码可能引用了不同的问题。 这是我使用的稍作修改的守护程序代码:
https://www.jejik.com/articles/2007/02/a_simple_unix_linux_daemon_in_python/
我希望这个答案对某人有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.