Cuando se usa os.execlp, ¿por qué `python` necesita` python` como argv

El código es así:

os.execlp('python', 'python', 'child.py', #other args#) # this works os.execlp('python', 'child.py', #other args#) # this doesn't work 

Leí esta pregunta: execlp () en python

Pero todavía estoy confundido. La respuesta decía:

El primer argumento es el progtwig a ejecutar (que se encuentra en la RUTA). El rest son los argumentos de sys.argv para el progtwig.

Sin embargo, si ejecuto: python child.py 1 2 3 y el sys.argv de este proceso sería ["child.py", "1", "2", "3"] , donde python no existe . Entonces, ¿por qué debería agregar python como el segundo parámetro de os.execlp ?

Cuando se ejecuta python, crea sys.argv para ti. Los valores en esa lista se basan en los argumentos que le pasa el sistema operativo, pero deja fuera del valor sys.executable de esa lista.

En otras palabras, cuando se invoca Python, establece sys.argv para todo, pero es su propio ejecutable .

Cuando os.execlp() un nuevo ejecutable a través de os.execlp() , aún debes incluir Python, ya que es lo que ejecutará el sistema operativo. Los primeros dos valores de lo que un pase a os.execlp() aún son necesarios, lo que encuentre en sys.argv más adelante.

El segundo python es un nombre para python, puede ser cualquier cadena, pero tiene que estar ahí.

Vea el segundo párrafo de http://docs.python.org/3/library/os.html?highlight=os.exec#process-management