【发布时间】:2017-03-06 02:53:43
【问题描述】:
我试图在我的 Windows 机器上使用 os.system 或子进程从 Python 运行可执行文件,但我遇到了一个奇怪的问题。
os.system/subprocess 调用适用于: 来自 IDLE 的 32 位 Python 控制台,
但它不适用于: 1)如果我运行任何 Python 会话(32 或 64)的 cmd 2)如果我使用 Spyder 的任何 Python 版本。 3) 任何 Python 版本的 PyCharm;
我得到这些错误:
2. An error window that appears immediately after I click OK on the first
我已经为此花费了很多时间,但我无法弄清楚为什么会发生这种情况。为什么 subprocess 或 os.system 不能在不同的 Python 控制台中工作?
此应用程序的依赖项是: GDAL 201 (MSVC 2013) 用于 32 位 Windows PC, GDAL 201 (MSVC 2013 Win 64) 用于 64 位 Windows PC, GDAL 2.1.0 用于 Python 2.7, 微软 MPI v7.1, Microsoft Visual C++ 2015 可再发行包 (x86), Microsoft Visual C++ 2015 Redistributable Package (x64)
sys.path - Python2.7 (Win32) IDLE
['', 'C:\ProgramData\Microsoft\Windows\开始菜单\Programs\ArcGIS\Python 2.7', 'C:\Python27\ArcGIS10.2\Lib\idlelib', 'C:\Users\svimal\Desktop\Python', 'C:\WINDOWS\system32\python27.zip', 'C:\Python27\ArcGIS10.2\DLLs', 'C:\Python27\ArcGIS10.2\lib', 'C:\Python27\ArcGIS10.2\lib\plat-win', 'C:\Python27\ArcGIS10.2\lib\lib-tk', 'C:\Python27\ArcGIS10.2', 'C:\Python27\ArcGIS10.2\lib\site-packages', 'C:\Program Files (x86)\ArcGIS\Desktop10.2\bin', 'C:\Program Files (x86)\ArcGIS\Desktop10.2\arcpy', 'C:\Program Files (x86)\ArcGIS\Desktop10.2\ArcToolbox\Scripts']
来自 Windows CMD 的 sys.path Python 控制台
['', 'C:\Users\svimal\Desktop\Python', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python27.zip', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\DLLs', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\plat-win', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\lib-tk', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\FontTools', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\Pythonwin', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\setuptools-27.2.0-py2.7.egg']
sys.path - PyCharm
['C:\Program Files (x86)\JetBrains\PyCharm Community Edition 2016.2.3\helpers\pydev', 'C:\Users\svimal\Desktop\Python', 'C:\Program Files (x86)\JetBrains\PyCharm 社区版 2016.2.3\helpers\pydev', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python27.zip', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\DLLs', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\plat-win', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\lib-tk', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\FontTools', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\Pythonwin', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\setuptools-27.2.0-py2.7.egg', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\IPython\extensions', 'C:\Users\svimal\Desktop\Work\EU_Floods']
sys.path - Spyder
['', 'C:\Users\svimal\Desktop\Python', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python27.zip', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\DLLs', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\plat-win', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\lib-tk', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\FontTools', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\win32\lib', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64 \lib\site-packages\Pythonwin', 'C:\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\lib\site-packages\setuptools-27.2.0-py2.7.egg']
【问题讨论】:
-
检查进程本身内的
sys.path。而且你必须调查 PyCharm 和 IDLE 之间的区别。添加shell=True是子进程可能会有所帮助。 -
请在您的帖子中包含
WHAT YOU TRIED OUT。 -
我已经从帖子中提到的不同 Python 控制台添加了 sys.path。我使用的确切命令是 os.system("path\executable.exe")
-
试试
subprocess.call('path/to/app.exe', shell=True) -
我试过了,没用!
标签: python console subprocess runtime-error executable