我正在尝试使用 PushBullet.py
它使用 python-magic
它又使用libmagic
。
我已关注dependencies说明并安装了 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
OR 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
我在运行 Python 32 位 2.7.8 的 Windows 7 64 位上执行此操作(今天全新安装以尝试解决此问题)。
有谁知道如何解决这个问题吗?
编辑:在另外 5 台不同的 Windows 计算机上进行了尝试,所有 5 台计算机都有相同的问题。
最佳答案
我在使用 python-magic 时遇到了同样的问题,并通过修复 magic.py
文件 (C:\Python27\lib\site-packages\magic.txt) 中的以下行解决了该问题。 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 repository 上得到解决。 .
编辑2:
以下是我让 PushBullet.py
在我的机器上工作所遵循的步骤:
- 通过
pip
安装PushBullet.py
(pip install PushBullet.py
); - 从 Cygwin 安装
libmagic
; - 将
C:\cygwin\bin\
添加到PATH
环境变量中; - 按照我上面的说明更改
magic.py
文件。 (在我的例子中,错误出现在第 139 行)
关于python - 由于 python-magic 无法找到 libmagic,Python 上的 Pushbullet 会引发导入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25328104/