【发布时间】:2010-05-17 02:58:59
【问题描述】:
我正在尝试找到在其内部重新调用 Python 脚本的最佳方式。目前它的工作方式类似于http://github.com/benoitc/gunicorn/blob/master/gunicorn/arbiter.py#L285。 START_CTX 是在 http://github.com/benoitc/gunicorn/blob/master/gunicorn/arbiter.py#L82-86 创建的。
代码依赖sys.argv[0] 作为“调用者”。但是,在以下情况下会失败:
python script.py ...
这种情况确实有效:
python ./script.py ...
因为代码在运行os.execlp之前使用了os.chdir。
我确实注意到了os.environ["_"],但我不确定这有多可靠。另一种可能的情况是检查sys.argv[0] 是否不在PATH 上且不可执行,并在调用os.execlp 时使用sys.executable。
对解决此问题的更好方法有什么想法吗?
【问题讨论】:
-
是否可以简单地不允许第一种情况,或者将脚本包装在可以纠正它的 shell 脚本中?
标签: python