【问题标题】:calling executable from Python Win32 IDLE works but the same from Windows console Python session doesn't从 Python Win32 IDLE 调用可执行文件有效,但从 Windows 控制台 Python 会话中调用可执行文件却不能
【发布时间】: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;

我得到这些错误:

1. Run time error

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


【解决方案1】:

您可能会在使用“script\make_winpython_fix.bat”后重试,但 winpython-2.7.9.5 没有该选项,(2015 年 10 月 8 日发布)

https://github.com/stonebig/winpython/commit/1080831930a1dedaf6a0c3019e7150b46a138357

【讨论】:

  • 如何使用 winpython_fix.bat?我重新安装了最新版本的 winpython,现在命令行 python 会话似乎按预期工作。但是 Spyder 仍然抛出运行时错误。我还没有检查 PyCharm。
  • 你双击脚本“make_winpython_fix.bat”
  • 做到了。不解决问题。但是,我将 make_winpython_fix.bat 文件从新版本的 WinpPython (WinPython-64bit-2.7.12) 的脚本文件夹中复制到计算机中已安装版本 (2.7.9) 的同一文件夹中。我可以尝试安装新版本并再次运行 make_winpython_fix.bat。
猜你喜欢
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 2011-01-29
  • 2016-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多