- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在过去的几天里,我一直在尝试弄清楚如何用我拥有的一堆 Python3.4 脚本构建一个无 dep 的应用程序。其中包括进口 wand
,这需要ImageMagick
要安装在机器上。
到目前为止,一切顺利,从源代码运行的应用程序在我的开发环境(Debian8/Win10)中运行良好,找到了 Wand 模块正常运行所需的所有依赖项。
当我尝试使用 PyInstaller 打包应用程序时,出现了问题。
构建过程按预期工作,获取 ImageMagick 资源( .dll
等)并将它们与其他二进制文件一起包含在输出目录中,但是当我在没有安装 IM 库的计算机上运行应用程序时,导入失败。
所以我深入研究了 Wand 源代码,并意识到依赖项是在全局系统路径(即 C:\ProgramFiles)中查找的。作为解决方法,在我的代码中,我只是覆盖了 os.environ['MAGICK_HOME']
变量为 './'
指示模块获取适当的依赖项。在某种程度上,它确实有效。
现在我可以启动应用程序:导入不会失败,GUI 已绘制且功能不受影响。至少在我触发任何涉及魔杖的操作之前不会,因为每当我执行该操作时,应用程序都会崩溃并引发以下异常:
wand.exceptions.ConfigureError: RegistryKeyLookupFailed `CoderModulesPath' @ error/module.c/GetMagickModulePath/666
很明显,系统范围内缺乏正确的安装会导致注册表调用损坏(现在在 win 上进行测试),但不幸的是我不太熟悉 CTypes(或用于绑定(bind)到 ImageMagick 库的任何内容) )并且我不确定如何继续正确构建无依赖应用程序。
一如既往,我脑海中浮现的第一个问题是:我是否在这里遗漏了一些明显的东西?
如果没有,您有什么建议?
谢谢
最佳答案
这更多的是评论,而不是真正的答案,但我建议以下......
MAGICK_HOME
设置 MAGICK_HOME
环境变量是明智的做法。 但是我建议使用os.path
来解析系统绝对路径;而不是相对。
os.environ['MAGICK_HOME'] = os.path.abspath('.')
非常小,但有帮助。
.dll 等
请记住,IM 是它自己的生态系统。确实,wand
只需要 MagickWand
和 MagickCore
库即可运行,但 IM 需要所有委托(delegate)/编码器才能发挥作用。确保一切都存在,并仔细检查 QuickStart.txt .
在您的构建系统上,可能值得检查 identify
实用程序,以查看 PyInstallers 捆绑阶段应包含的其他路径。
identify -list Configure | grep PATH
在我的 Mac 上,我收到以下信息...
CODER_PATH /usr/local/lib/ImageMagick-6.9.5/modules-Q16/coders
CONFIGURE_PATH /usr/local/etc/ImageMagick-6/
DOCUMENTATION_PATH /usr/local/share/doc/ImageMagick-6
EXECUTABLE_PATH /usr/local/bin
FILTER_PATH /usr/local/lib/ImageMagick-6.9.5/modules-Q16/filters
INCLUDE_PATH /usr/local/include/ImageMagick-6
LIBRARY_PATH /usr/local/lib/ImageMagick-6.9.5
SHARE_PATH /usr/local/share/ImageMagick-6
SHAREARCH_PATH /usr/local/lib/ImageMagick-6.9.5/config-Q16
CONFIGURE_PATH
下的policy.xml
文件是理想的包含内容,以确保您的应用程序免受 ImageTragick 的攻击。
关于python - PyInstaller + Wand (ImageMagick) - 缺少依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42004835/
我想将 pdf 的第一页转换为图像。我的以下代码在我的本地环境中运行良好:Ubuntu 18。但是当我在 docker 环境中运行时,它失败并引发: wand.exceptions.WandRunti
我正在尝试运行一个脚本,该脚本将遍历特定文件夹并使用 Wand 为其在该文件夹中找到的每个 .pdf 文件创建一个 .png 文件。 from wand.image import Image impo
我正在尝试使用 python Wand 调整图像大小,保留纵横比并使用透明度填充剩余位置。例如,我想在保持纵横比的同时将一个大矩形缩小以适应 100x100 图像,但我希望返回一个 100x100 的
所以,我正在使用 Wand Python Library弄乱一些图像。 我只是希望它逐个像素地查看图像,对于特定颜色的每个像素,例如“4d4d4d”,将该像素颜色替换为其他颜色,例如“#00ff00”
我想打开一个 pdf 文件,只获取第一页并将其另存为图像。我用过 this solution它工作完美。它在我的本地环境中仍然有效,但最近在 Travis 中无法正常工作。 是的,这段代码来 self
我们使用Celery下的Python Wand来处理很多图片。在我们的一些服务器上,我们的处理有时会留下很多临时文件,例如: $ ls -lh/tmp/ -rw------- 1 ubuntu ubu
我正在编写一个 django/python 应用程序,我需要将用户上传的 PDF 文件转换为 JPEG(文件是扫描文件) 我正在尝试使用带有 ImageMagick 后端(在 OSX 上)和 我不断收
如果我执行以下操作 for root, dirs, files in os.walk(myDir): for myFile in files: with Image(filename=my
如何在 wand (python) 中并排堆叠两个图像?复合方法是可用的,但它将一个图像放在另一图像之上。我想要像 numpy.vstack 这样的东西。 最佳答案 您还可以使用 smush() 并在
我正在尝试使用Wand创建一个多尺寸的 ico,但我没有找到任何关于此的内容,只有正常的转换,到 ico...我找到了“序列”: https://wand.readthedocs.org/en/lat
我正在尝试在 Python 上的 Wand 中编写一个自动化脚本,通过一次一个字母地编写图像标题来构建文本动画的框架。 问题是,当我使用标题命令(此处的文档 http://docs.wand-py.o
我在 Tesseract OCR 中使用了下面的图片: 我处理图片的代码是: # HOCR with image[450:6200, 840:3550] as cropped: imgPage
您好,我正在尝试在图像上写文字。但是文字溢出来了。有什么方法可以将此类文本内容包裹起来以适合图像? from wand.image import Image from wand.drawing imp
Imagemagick是用于显示、转换和编辑光栅图像文件的开源软件套件。 Wand是 ctypes用于 Python 的基于 ImageMagick 的绑定(bind)。 我如何获得图像文件列表,这是
我有一张图片(例如:mask)和两个整数,代表最终图片的宽度和高度。根据 Wand 的文档 Open empty image : with Image(width=200, height=100) a
我正在构建一个应用程序,它使用棒调整系统中照片的大小并生成缩略图。我想生成移动的 gif 缩略图,它在下面的代码中工作。但是我不想获得巨大的缩略图文件大小。如果缩略图超过 5mb,我希望它生成 jpe
这是我的代码: class ToPng(APIView): def post(self, request, *args, **kwargs): revision = reque
我的小脚本有问题。我想使用 wand 来将 PDF 文件转换成 jpeg 文件,我想只保存一个特定的帧。 我的脚本做了两件事: 如果 PDF 文档只有一页:将其转换并保存为 jpeg 文件(有效) 如
我想在使用 dplyr 编写现有代码的同时使用 plyrmr 包,因此我想使用“magic.wand”函数。为简单起见,我使用“mtcars”数据集,它的路径是 HDFS(Hadoop 分布式文件系统
我有这段代码,以 pdf 文件作为参数并将其转换为 JPG。我的问题是,当 pdf 有多于一页时,创建像这样的图像:test-0.jpg、test-1.jpg 等。 with Img(filenam
我是一名优秀的程序员,十分优秀!