需要Python3.3的观察者。

10 浏览
0 Comments

需要Python3.3的观察者。

我的应用程序需要监控文件系统,并在文件被添加或更改时做出响应。我正在运行Python 3.3,并且在阅读软件包列表时,"watcher"看起来正是我所需要的,只是所有的安装可执行文件都是针对Python 3.2及以下版本和Win32的(而我使用的是Win64)。我尝试使用pip和easy_install安装,但出现了一个错误"无法找到vcvarsall.bat",根据查阅的资料,这个问题并不容易解决。如果有关于安装watcher或其他系统监控软件包的建议,我将非常感激。

0
0 Comments

需要Python3.3的watcher,原因是因为它尝试编译一些C或C++代码并需要编译器。默认的Windows上的Python编译器是MSVC,你也可以使用MinGW,但你需要安装其中之一并将它们添加到环境变量中才能继续。

在这个例子中,无法使用使用Python3.2编译的pyd文件在Python3.3中使用,这并不是你忽略了什么,对我来说也没有成功。为了让它与mingw32一起工作,只需要简单的设置就可以了。

如果你相信我,我已经在这里放了一个模块的二进制文件,如果你下载它,请确保对它进行病毒扫描,因为它是从未打补丁的XP虚拟机中提取的。还要注意,它可能需要一些额外的库才能正常工作,但我没有第二台机器来尝试。如果它不能工作,但你得到了你所缺少的库的列表,我可以帮你找到它们。

要自己构建它,你可以使用msvc(关于它我一无所知)或mingw。你可以在这里下载mingw。安装时,请确保至少安装C编译器和msys。你需要一个经过修补的watcher源码,以便给编译器提供正确的参数,并使其与python3.3兼容。你可以在这里下载它。你需要自己编辑安装文件以更新mingw安装的位置,第19行和第20行是重要的。设置完成后,你应该能够调用\Path\To\Python3\python setup.py build -cmingw32,然后调用\path\to\python3\python setup.py install。如果它抱怨找不到头文件(以.h结尾),请在计算机上搜索它并将其位置添加到第19行的列表中。如果ld.exe找不到库,搜索库名称,你需要以.a结尾的文件,将其位置添加到第20行的列表中,注意每个字符串中都需要使用-I和-L。完成后,你应该能够启动watcher。

请注意,它需要一个回调函数,比你提供的参数列表多两个参数,并且如果参数数量不正确,它会失败但不会解释原因。

如果第二个方法不起作用,或者你想在Windows上帮助编译它自己,请告诉我。

非常感谢。我按照你的第二个方法手动提取了存档。然后我将其内容移动到了我的Python33/Lib/site-packages文件夹。该包具有其init文件,所以看起来完整,但当我运行它的test_watcher.py脚本时,Python无法识别watcher模块。我错过了什么步骤吗?(这是我第一次尝试手动安装。)

好的,看起来在3.2和3.3之间存在一些不兼容的库。我会更新我的答案。

哇!非常感谢你的努力。我下载并安装了你的二进制文件。测试程序找到它,但Python shell给出以下错误:Traceback (most recent call last): File "C:\Program Files\Python33\Lib\site-packages\watcher\tests\test_watcher.py", line 11, in <module> import watcher File "C:\Program Files\Python33\lib\site-packages\watcher_init_.py", line 1, in <module> from ._watcher import * ImportError: DLL load failed: %1 is not a valid Win32 application.

嗯...我使用32位的Windows XP进行了编译。我在它上面运行了Dependency Walker,并没有看到你确信缺少的任何东西。我建议下载depends.exe并在_watcher.pyd上运行它,它会告诉你它需要哪些DLL并且哪些缺失。如果它说缺少msjava.dll或mpr.dll,那没关系,但如果缺少其他任何内容,请告诉我缺少的是什么,我们可以找到它在哪里获得。如果它说一切都好,你可能需要下定决心自己编译它,因为我不知道还有什么可以尝试的。

0