Celeritas
Celeritas

Reputation: 15091

Can't popen new instance of python.exe

There’s a project where I need to use both Python 3.3 and 2.7. I am trying to launch a script under Python 2.7 but it’s not working. Here is a simple example.

first.py

import subprocess
import sys
print('Inside first.py')
print(sys.version)
subprocess.Popen(["C:\Python27\ArcGISx6410.2\Python.exe", "second.py"])

second.py

import arcpy

print 'This is second.py'

This doesn’t work and the output is

Inside first.py
3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:35:05) [MSC v.1600 64 bit (AMD64)]
  File "C:\Python33\lib\site.py", line 173
    file=sys.stderr)
        ^
SyntaxError: invalid syntax

That’s the entire stack trace. If I were to replace C:\...Python.exe with notepad.exe then it works. I’m using Liclipse on Windows 7.

UPDATE: it appears different versions of Python are run, when from the command line python first.py is 3.3 but py first.py or just first.py then 2.7 is used.

Upvotes: 0

Views: 115

Answers (1)

kirbyfan64sos
kirbyfan64sos

Reputation: 10727

Try:

import os
subprocess.Popen(["C:\\Python27\\ArcGISx6410.2\\Python.exe", "second.py"], env=dict(os.environ, PYTHONHOME="C:\\Python27\\ArcGISx6410.2"))

Python on Windows needs a little help sometimes to figure out which version of the standard library to use.

Upvotes: 1

Related Questions