python subproceso Entorno Popen RUTA?

Estoy confundido acerca de cómosubprocess busca el ejecutable cuando usaPopen(). Funciona si se le dan rutas absolutas al proceso secundario, pero estoy tratando de usar rutas relativas. Descubrí que si configuro la variable de entorno PYTHONPATH, entonces puedo obtener módulos importados de esa ruta, y PYTHONPATH está allí ensys.path, pero no parece ayudar con el comportamiento desubprocess.Popen. También he intentado editar lasitecustomize.py archivo agregando PYTHONPATH aos.environ, al igual qu

# copy PYTHONPATH environment variable into PATH to allow our stuff to use
# relative paths for subprocess spawning
import os
if os.getenv('PYTHONPATH') is not None and os.getenv('PATH') is not none:
    os.environ['PATH'] = ':'.join([os.getenv('PATH'), os.getenv('PYTHONPATH')])

y verificó que al iniciar python, ya sea de forma interactiva, con ipython o ejecutando un script desde la línea de comandos, PYTHONPATH aparece con éxito enos.environ. Sin embargo,subrocess.Popen todaví no busca allí el ejecutable. Pensé que se suponía que heredaría el entorno de los padres, si noenv kwarg se especifica? Luego intenté darleenv explícitamente, primero haciendo una copia deos.getenv y en segundo lugar simplemente dandoenv={'PATH': '/explicit/path/to/search/from'}, y todavía no encuentra el ejecutable. Ahora estoy perplejo.

Espero que un ejemplo ayude a explicar mi problema más claramente:

/ dir / subdir1 / some_executable
/ dir / subdir2 / some_script.py

# some_script.py
from subprocess import Popen, PIPE
spam, eggs = Popen(['../subdir1/some_executable'], stdout=PIPE, stderr=PIPE).communicate()

Si estoy en/dir/subdir2 y corropython some_script.py funciona, pero si estoy en/dir y corropython subdir2/some_script.py aunque/dir/subdir2 está en elos.environ['PATH'], entonces el subproceso arrojaráOSError: [Errno 2] No such file or directory.

Respuestas a la pregunta(4)

Su respuesta a la pregunta