从文件扩展名关联运行脚本时,windows 7上的python多处理失败 我有一个相当复杂的Python应用程序(我继承了),当我从文件类型关联(在浏览器中双击数据文件)在Windows中运行它时,我在Python多重处理的中间发生了一个崩溃: Traceback (most recent call last): File "<string>", line 1, in <module> File "c:\Python27\lib\multiprocessing\forking.py", line 380, in main prepare(preparation_data) File "c:\Python27\lib\multiprocessing\forking.py", line 489, in prepare file, path_name, etc = imp.find_module(main_name, dirs) ImportError: No module named MainModule 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“c:\Python27\lib\multiprocessing\forking.py”,第380行,在main中 准备(准备数据) 文件“c:\Python27\lib\multiprocessing\forking.py”,第489行,在prepare中 文件,路径名称,etc=imp.find模块(主名称,目录) ImportError:没有名为MainModule的模块

从文件扩展名关联运行脚本时,windows 7上的python多处理失败 我有一个相当复杂的Python应用程序(我继承了),当我从文件类型关联(在浏览器中双击数据文件)在Windows中运行它时,我在Python多重处理的中间发生了一个崩溃: Traceback (most recent call last): File "<string>", line 1, in <module> File "c:\Python27\lib\multiprocessing\forking.py", line 380, in main prepare(preparation_data) File "c:\Python27\lib\multiprocessing\forking.py", line 489, in prepare file, path_name, etc = imp.find_module(main_name, dirs) ImportError: No module named MainModule 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 文件“c:\Python27\lib\multiprocessing\forking.py”,第380行,在main中 准备(准备数据) 文件“c:\Python27\lib\multiprocessing\forking.py”,第489行,在prepare中 文件,路径名称,etc=imp.find模块(主名称,目录) ImportError:没有名为MainModule的模块,python,windows,associations,multiprocessing,Python,Windows,Associations,Multiprocessing,如果我从windows命令行运行应用程序,它将成功运行: python MainModule.py{full file pathname} 调用流程对象的“start”方法时会发生故障 因为这深深地埋藏在python中,所以我很难找出是什么导致了这一点。在流程对象开始之前,或者在流程对象创建之前,我尝试将工作目录设置为主模块目录,但没有任何改进。我还研究了传递给“prepare”的数据的值,但除了原始目录之外,似乎没有任何区别 有人能建议我应该在哪里和/或如何调查此事吗 编辑: 我将数据文件与处

如果我从windows命令行运行应用程序,它将成功运行:

python MainModule.py{full file pathname}

调用流程对象的“start”方法时会发生故障

因为这深深地埋藏在python中,所以我很难找出是什么导致了这一点。在流程对象开始之前,或者在流程对象创建之前,我尝试将工作目录设置为主模块目录,但没有任何改进。我还研究了传递给“prepare”的数据的值,但除了原始目录之外,似乎没有任何区别

有人能建议我应该在哪里和/或如何调查此事吗

编辑:

我将数据文件与处理它的python应用程序相关联。如果我在与python应用程序主模块相同的目录下的命令行中发出该命令,它就会工作。如果我试图通过文件关联发出相同的命令,它将失败。我可以将一个更改为应用程序目录的bat文件关联起来,发出一个简单的“cd”命令,打印目录(不知道为什么这是必要的,但似乎是必要的),然后以数据文件作为参数启动应用程序-就像关联一样-它可以工作。我认为这与python模块搜索路径有关,但不知道是什么

编辑2:


哇,太尴尬了。问题出在协会(某种程度上)。调用的脚本的大小写不正确。。。脚本正在成功执行,但当进程尝试分叉时,多处理会查找大写错误的文件名并。。。没有找到它!所以windows不关心大小写,而Python在windows上也有类似的功能:它不用于脚本执行,但用于进程分叉…

双击哪个文件?如果它不是
MainModule.py
的话,我就不指望它能解决这个问题,但您的应用程序中是否包含MainModule?(假设您没有运行MainModule.py)除了将数据文件与python应用程序关联之外,我认为您还需要添加一个“.py”指向PATHEXT环境变量,以告诉操作系统该文件包含该文件。应用程序中也可能存在某种形式的相对导入,在双击时没有获得正确的起始目录,但在从命令行运行时。这显然是一个bug(我也有):