我尝试使用PushBullet.py,它使用python-magic,而后者又使用libmagic。
我已经按照依赖关系指令安装了Cygwin,并将这三个文件复制到Windows\system32目录中,但仍然收到以下错误:
Traceback (most recent call last):
File "C:\New Python ActiveX Scripting Engine.py", line 1, in <module>
from pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\__init__.py", line 2, in <module>
from .pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\pushbullet.py", line 4, in <module>
import magic
File "C:\Python27\lib\site-packages\magic.py", line 161, in <module>
raise ImportError('failed to find libmagic. Check your installation')
ImportError: failed to find libmagic. Check your installation编辑
如果我将cygmagic-1.dll 或 cygz.dll放入C:\Python27\并将其重命名为magic.dll,则会得到以下错误:
Traceback (most recent call last):
File "C:\New Python ActiveX Scripting Engine.py", line 1, in <module>
from pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\__init__.py", line 2, in <module>
from .pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\pushbullet.py", line 4, in <module>
import magic
File "C:\Python27\lib\site-packages\magic.py", line 143, in <module>
libmagic = ctypes.CDLL(dll)
File "C:\Python27\lib\ctypes\__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 126] The specified module could not be found如果将cygwin1.dll放入C:\Python27\并将其重命名为magic.dll,则会得到以下错误:
Traceback (most recent call last):
File "C:\New Python ActiveX Scripting Engine.py", line 1, in <module>
from pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\__init__.py", line 2, in <module>
from .pushbullet import PushBullet
File "C:\Python27\lib\site-packages\pushbullet\pushbullet.py", line 4, in <module>
import magic
File "C:\Python27\lib\site-packages\magic.py", line 185, in <module>
magic_open = libmagic.magic_open
File "C:\Python27\lib\ctypes\__init__.py", line 378, in __getattr__
func = self.__getitem__(name)
File "C:\Python27\lib\ctypes\__init__.py", line 383, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'magic_open' not found我正在运行Python32bit 2.7.8的Windows 7 64位上执行此操作(为了解决这个问题,请立即重新安装)。
有人知道如何解决这个问题吗?
编辑:在另外5台不同的windows计算机上试用,所有5台都有相同的问题。
发布于 2014-08-26 19:21:12
从跟踪清单中的Windows路径中,我猜您正在尝试从中执行PushBullet脚本。如果你不使用Cygwin,为什么要安装它?Python for Windows实际上不会使用Cygwin的DLL。
您必须使用用于Cygwin的Python从Cygwin执行PushBullet.py,而不是使用Python的Windows执行。这意味着执行,例如,bash (类似于C:\cygwin64\bin\bash.exe --login -i)和bash执行PushBullet脚本:python PushBullet.py。
它期望你有Python和python(代表Cygwin!)而不是已经安装的Windows )。
将DLL复制到系统目录是无稽之谈,不要这样做。重新命名他们是胡说八道。你以为它能起作用吗?每个库都是特定的,您不能仅仅重命名它以改变它内部的工作方式。
我已经使用PushBullet一段时间了,所以我对这个特定的Python脚本很感兴趣。我也用了几年的Cygwin。所以我安装了PushBullet库:
pip install pushbullet.py
然后我创建了非常简单的脚本test.py
#!/usr/bin/python
from pushbullet import PushBullet
pb = PushBullet('my_access_token')
success, push = pb.push_note("Testing title", "Hello world!")当我使用./test.py执行它时,我收到了一条错误消息,即我缺少magic库,所以我使用Cygwin的安装实用程序安装了python-magic库。
我又执行了一次,瞧--我有“你好世界!”我手机上的留言。好了。
请再说一遍:我是从Cygwin的shell (zsh,但我猜是bash )执行的,而不是从Windows执行的。我也没有在Windows上使用Python,但是使用了Cygwin的版本。不要混合Windows和Cygwin可执行文件!
所以防不胜防的步骤是:
setup.exe下载并执行Cygwin.compython和python-magicC:\cygwin64\bin\bash.exe --login -i,例如从"Run”对话框或Windows执行)pip (参见Pip安装在windows 7 Cygwin安装上不起作用)pip install pushbullet.pypython testing_script.py行并且是可执行的,则只执行testing_script.py。谢谢您对有用库的提示:)
发布于 2014-09-12 18:41:05
我在python-魔术方面也遇到了同样的问题,并通过修复magic.py文件中的以下行(我的PC中的C:\Python27\lib\site-packages\magic.py)来解决这个问题:
dll = ctypes.util.find_library('magic') or ctypes.util.find_library('magic1')因为我已经从Cygwin安装了libmagic,所以这个DLL被命名为cygmagic-1.dll。因此,我简单地在前一行中添加了另一个选项:
dll = ctypes.util.find_library('magic') or ctypes.util.find_library('magic1') \
or ctypes.util.find_library('cygmagic-1')不要忘记将cygwin\bin添加到您的PATH中。
编辑:似乎已经在GitHub存储库上解决了这个问题。
EDIT2:,以下是使PushBullet.py在我的机器上工作所遵循的步骤:
PushBullet.py通过pip (pip install PushBullet.py)安装;libmagic安装西格温;C:\cygwin\bin\添加到PATH环境变量;magic.py文件。(在我的例子中,错误出现在第139行)发布于 2014-08-15 15:09:18
不能混合Cygwin和MSVCRT二进制文件。因此,为了在Windows中使用python-魔术,您必须获得一个Windows编译的libmagic并修复magic.py以找到libmagic。
否则,如果您想像以前一样使用Cygwin的python --魔术,则需要使用Cygwin的python包。
https://stackoverflow.com/questions/25328104
复制相似问题