【问题标题】:My application dll's are not properly loaded when launching application through Python Script通过 Python 脚本启动应用程序时,我的应用程序 dll 未正确加载
【发布时间】:2017-03-28 11:57:26
【问题描述】:

我已使用以下脚本启动我的应用程序。

import subprocess
subprocess.call('C:\Program Files (x86)\Terrain\Track3D\TRACK™.exe')

我能够启动应用程序,但我的应用程序的一些 dll 没有加载。该应用程序在手动启动时完美启动。

显示的错误很多,其中一些是:

1) 无法加载模块 SchedulesController 的类型。 错误是:无法加载文件或程序集“Schedules.dll”或其依赖项之一。该系统找不到指定的文件。 System.IO.File Not Found 异常。

2) 错误窗口的标题为“Microsoft.Practices.Prism.ModuleTypeLoadingException”

谁能帮我解决这个问题?

【问题讨论】:

  • Schedules.dll 在您的系统中位于何处?顺便说一句,Windows 路径使用 raw 前缀,您可能会遇到问题。
  • 它位于 Track3D 文件夹中。你能告诉我我应该如何为上面提到的路径使用原始前缀吗?
  • 你可以试试subprocess.call('TRACK™.exe',cwd=r'C:\Program Files (x86)\Terrain\Track3D') 吗?
  • 嗨,Jean,我尝试了上述方法,但它显示语法无效。反正这是我用的。 subprocess.call('TRACK™.exe',cwd=r 'C:\ProgramFiles(x86)\Terrain\TRACK3D')
  • 我在r 和字符串之间放了一个空格吗?请复制我的行,不要重新输入。

标签: python dll


【解决方案1】:

windows上python的一个特点是路径中的正斜杠需要转义,包含空格的目录或文件名需要用引号引起来。此外,文件名末尾有 unicode (tm)。

    import subprocess
    subprocess.call('C:\\"Program Files (x86)"\\Terrain\\Track3D\\r"TRACK™.exe"')

所做的三个更改是:

  • Windows 上的 Python 在路径名中需要“\\”而不是“\”
  • 带空格的文件/目录名称需要引号
  • r"TRACK™.exe" 指示 python 使用原始字符串(以正确表示 (tm))

【讨论】:

  • 嗨史蒂夫,我尝试了你提供的这两个选项。 dll 仍未正确加载。
  • 那不是因为无法加载DLL。在这种特殊情况下,反斜杠不是问题,因为后面没有有效的转义序列。
  • 嗨,史蒂夫,我的应用程序是 32 位应用程序。并且 TM 是应用程序 exe 名称的一部分。所以如果我要删除它,它会变成一个无效的路径吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 2012-02-23
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
相关资源
最近更新 更多