如何安装 PyGObject?

2023-12-03

我正在尝试在 Windows 7 上安装 PyGtk for Python 2.7,但是当使用 pip 安装 PyGtk 时,它说我需要 PyGObject (见图),所以我安装了 Python 的 Visual C++ 包(我知道我有正确的版本)并且尝试使用 pip 安装 PyGObject,但它不断出现错误消息,指出 cairo.h 丢失,果然我检查了该目录,但它不在那里。我到底应该如何安装 PyGObject?

Error Message


虽然还有很长的路要走,而且还需要在这里和那里进行一些调整,但它是有效的。我用的是Python 3.6,不知道2.7是否可以使用。

首先,从此处获取 GTK+3 for Windows 的构建脚本 (https://github.com/guruDanny67/gvsbuild)。这是这个仓库的一个分支(https://github.com/wingtk/gvsbuild),但它似乎与各个版本的软件包更新有关。我使用了“ed2018”分支,这似乎是最相关的,但该分支的更改可能会以“master”结束,因此请检查前后的提交数量。

如果您没有在 Visual Studio 2017 中安装 C++ 工作负载,您还需要 Visual Studio 2017 构建工具。您也可以使用 VS 2015,但我没有尝试。 2017 年构建工具在这里:https://visualstudio.microsoft.com/downloads/#other。您可能还应该包含“VC++ 2015.3 v14.00 桌面工具集”。

您需要安装Python。我用的是3.6版本,其他的不知道。

另外,您还需要 MSYS2(http://www.msys2.org/)。它仅用于一些需要的工具。

编译/安装(大部分)非常简单,但需要一些时间(SSD 可能有很大帮助)。只需阅读 gvsbuild 页面上的说明即可。如果你一点一点地构建,它会有助于包括--fast-build命令行中的参数。

您可以获得可以使用以下方式构建的所有项目的列表

python build.py list

或者简单地

build list

如果您安装了 Python 启动器。

构建的所有选项:

build build --help

有一个 pygobject 和 pycairo 的构建项目,它将它们安装在已安装的 Python 中site-packages目录。但是,更好的方法是卸载它们(使用pip或者如果 pip 抱怨,则删除目录)。

然后,从 PyPi 站点下载 PyCairo 和 PyGObject 的源代码 (https://pypi.org/project/pycairo/, https://pypi.org/project/PyGObject/)。添加带有一堆的目录lib文件到你的LIB环境变量(应该是这样的f:\gtk-build\gtk\Win32\release\lib)。将包含目录添加到您的INCLUDE环境变量(c:\gtk-build\gtk\Win32\release\include),然后运行setup build首先是开罗的脚本。如果构建完成 OK,则运行setup bdist_wininst。它将在目录中生成一个安装exe文件dist子目录。运行此 exe(以管理员身份),您应该已经安装了 PyCairo。

PyGobject 的构建是相同的。

If the setup build抱怨找不到一些.lib or .include文件,只需找到它们位于哪个文件夹中,在您的某个位置gtk-build\gtk\Win32\release\' folder. Include that folder inLIBorINCLUDE` 变量并再次运行。

HTH, Tom

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何安装 PyGObject? 的相关文章

  • 使用 JSON 和字典在 Python 中处理错误

    我目前有一个 Python 2 7 脚本 可以抓取 Facebook 并从每个页面捕获一些 JSON 数据 JSON 数据包含个人信息 JSON 数据的示例如下 id 4 name Mark Zuckerberg first name Ma
  • 语法错误可以处理吗?

    考虑以下代码 try if True a 1 It s missing a colon So it s a SyntaxError except SyntaxError print hey 你会期望它打印出来hey然而它提出了一个Synta
  • 如何在sqlite3中创建多个“:memory:”数据库

    我正在尝试使用 sqlite3 创建多个内存数据库 如果可能 对于磁盘数据库 我会这样做 import sqlite3 db1 sqlite3 connect mnt tmp db1 db db2 sqlite3 connect mnt t
  • 使用 sympy 计算符号特征值

    我正在尝试计算符号复矩阵的特征值Mof size 3x3 在某些情况下 eigenvals 工作完美 例如 以下代码 import sympy as sp kx sp symbols kx x 0 M sp Matrix 0 0 0 0 0
  • 将 Python 脚本导入另一个脚本?

    我正在阅读 Zed Shaw 的 艰难学习 Python 正在学习第 26 课 在本课中 我们必须修复一些代码 这些代码从另一个脚本调用函数 他说我们不必导入它们来通过测试 但我很好奇我们将如何做到这一点 课程链接 http learnpy
  • 使用 Google App Engine 和 Django 将第三方库 (twilio) 添加到项目中

    每个人 我是这个领域的新手 我使用 django 框架使用 google 应用引擎开发 Web 应用程序 我有一个关于 python lib dir 问题的故障排除 导入错误 没有名为 的模块 我的 appengine config py
  • spacy 是否将令牌列表作为输入?

    我想使用 spacy 的 POS 标记 NER 和依存解析 而不使用单词标记化 事实上 我的输入是代表一个句子的标记列表 我想尊重用户的标记化 无论是使用 spacy 还是任何其他 NLP 包 这是否可能 现在 我使用这个基于 spacy
  • 如何使用 python 标准库 zipfile 检查 zip 文件是否已加密?

    我正在使用 python 的标准库 zipfile 来测试存档 zf zipfile ZipFile archive name if zf testzip None checksum OK True 我收到这个运行时异常 File pack
  • 如何在两个类之间共享数据

    Question 有没有一种方法可以让两个类同时相互继承 背景 我目前正在开发一个 Socket Server 项目 在这个项目中 我有两个课程 一个Server类 以及一个GUI班级 他们的目的是不言自明的 但是 我显然需要让两个班级相互
  • os.listdir 和 os.path.isdir 混淆,isdir 是随机的吗?

    我有下面这个简单的过程来列出文件夹的内容 def some process self dir3 os listdir Users somepath programming somepathanother Data samples for d
  • numpy.polyfit 给出有用的拟合,但协方差矩阵无限

    我正在尝试将多项式拟合到一组数据 有时可能会出现以下情况 返回的协方差矩阵numpy ployfit仅由inf 尽管拟合似乎很有用 没有numpy inf或数据中的 numpy nan Example import numpy as np
  • 使用正则表达式抓取文本正文,排除特定条件

    我正在使用 Python 正则表达式来获取已解析电子邮件的正文 该正文可能不包含任何内容 也可能看起来像这样 一些连贯的句子 拉尔斯克法 ljkd 其他的东西 几行电子邮件签名等等 等等等等等等 我想要电子邮件正文中的所有内容 不包括签名行
  • 包装一个类,其方法返回该类的实例

    我需要编写一个类来包装第三方包中的类 通常 第三方类具有返回第三方类实例的方法 这些方法的包装版本必须将这些实例转换为包装类的实例 但我无法使其工作 我正在使用 Python 2 7 和新式类 基于创建一个包装类来围绕现有函数调用前置和后置
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • 如何删除Python字符串的最后一个utf8字符

    我有一个包含 utf 8 编码文本的字符串 我需要删除最后一个 utf 8 字符 到目前为止我做到了 msg msg 1 但这只会删除最后一个字节 只要最后一个字符是 ASCII 代码 它就可以工作 当最后一个字符是多字节字符时 它不再起作
  • 如何限制 sympy FiniteSet 包含符号

    我对 sympy 还很陌生 我尝试使用 linsolve 求解线性方程组 这产生了一个可以用以下两行重现的解决方案 d symbols d solution sets FiniteSet d 1 d 4 d 5 d 我的解决方案遵循限制 即
  • 如何将 pygame Surface 转换为 PIL 图像?

    我正在使用 PIL 来透视地变换屏幕的一部分 原始图像数据是一个 pygame Surface 需要转换为 PIL 图像 因此我发现了 pygame 的 tostring 函数就是为了这个目的而存在的 然而结果看起来很奇怪 见附图 这段代码
  • 如何检测一个二维数组是否在另一个二维数组内?

    因此 在堆栈溢出成员的帮助下 我得到了以下代码 data needle s which is a png image base64 code goes here decoded data decode base64 f cStringIO
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐