在 Windows 上为 Python 2.7 构建 lxml

2023-12-10

我正在尝试在 Windows 64 位计算机上为 Python 2.7 构建 lxml。我找不到 Python 2.7 版本的 lxml Egg。所以我从源头编译它。我正在按照该网站上的说明进行操作

http://lxml.de/build.html

在静态链接部分下。我收到错误

C:\Documents and Settings\Administrator\Desktop\lxmlpackage\lxml-2.2.6\lxml-2.2.
6>python setup.py bdist_wininst --static
Building lxml version 2.2.6.
NOTE: Trying to build without Cython, pre-generated 'src/lxml/lxml.etree.c' need
s to be available.
ERROR: 'xslt-config' is not recognized as an internal or external command,
operable program or batch file.

** make sure the development packages of libxml2 and libxslt are installed **

Using build configuration of libxslt
Building against libxml2/libxslt in one of the following directories:
  ..\libxml2-2.7.6--win32--w2k--x64\lib
  ..\libxslt-1.1.26--win32--w2k--x64--0002\lib
  ..\zlib-1.2.4--win32--w2k--x64
  ..\iconv-1.9.1--win32--w2k--x64-0001\lib
running bdist_wininst
running build
running build_py
running build_ext
building 'lxml.etree' extension
error: Unable to find vcvarsall.bat

谁能帮我这个?我尝试设置 Microsoft Visual Studio 的路径.. 我可以从命令行运行 vcvarsall.bat..但是 python 有问题


我敢打赌您不会为此使用 VS 2008 :)

There's def find_vcvarsall(版本):distutils 中的函数(猜猜看,它会查找 vcvarsall.bat),并带有以下注释

首先它试图找到 注册表中VS 2008的productdir。 如果失败,它会退回到 VS90COMNTOOLS 环境变量。

如果您没有使用 VS 2008,那么您既没有注册表项,也没有合适的环境变量,这就是 distutils 找不到 vcvarsall.bat 文件的原因。确实如此not检查是否可以通过 PATH 环境变量访问 bat 文件。

解决方案是定义VS90COMNTOOLS变量指向Visual Studio的Tools目录。

话虽这么说,看看11.4。 distutils.msvccompiler — 微软编译器Python 文档中的部分指出

通常,扩展模块需要 使用相同的编译器编译 它被用来编译Python。

马丁诉洛伊斯 (Martin v. Loewis) 的电子邮件标题为立即下载 Visual Studio Express 2008在 python-list 邮件列表上声明相同

Python 2.6、2.7 和 3.1 均已构建 随着该版本(即 2008 年)。因为 另一个悠久的传统,Python 扩展模块必须使用 相同的编译器版本(更多 具体来说,CRT 版本)作为 Python 本身。所以要构建扩展模块 对于任何这些版本,您需要 有 VS 2008 或 VS 2008 的副本 表达。

鉴于上述陈述,您should如果您想为 Python 2.7 构建 lxml,请使用 VS 2008,因此尽管设置 VS90COMNTOOLS 可以查找 vcvarsall.bat 文件,但它不是the解决方案。

话虽这么说:)人们确实尝试使用较旧的 CRT 和较新的编译器:
我可以将 Visual Studio 2010 的 C++ 编译器与 Visual Studio 2008 的 C++ 运行时库一起使用吗?
如何强制 C++ 编译器使用特定的 CRT 版本?
VS 2008 - 链接到较旧的 C 运行时

我要感谢线程中的 Kev Dwyer(指出了所使用的 VS 版本的重要性)和 Stefan Behnel(向我指出 distutils 作为处理编译器配置的地方)在 Windows 下构建 lxml 时出现问题 - 错误:无法找到 vcvarsall.bat在 lxml 邮件列表上。我还想感谢阿格伦霍尔姆从 freenode #distutils IRC 频道确认 distutils 确实包含查找 vcvarsall.bat 文件的代码。

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

在 Windows 上为 Python 2.7 构建 lxml 的相关文章

随机推荐

  • Scanf 将输入的字符串解析为字符数组

    我想在两个单独的数组中解析用户输入 使用 scanf g 编译没有错误 但出现内存访问错误 核心转储 德语 Speicherzugriffsfehler Speicherabzug geschrieben char top 10 char
  • Firebase 按字符搜索

    我在我的 firebase 应用程序中使用 FirebaseRecyclerAdapter 直到现在我仍然不知道如何在 Firebase 中按字符搜索 我已经使用了查询 并且得到了很好的结果 但它不可用 这是我想要的数据库搜索 这是我使用它
  • Excel 中的排列

    我有一个有 6 个空格的字符串 例如000000 每个空格可以容纳三位数字之一 0 1 或 2 我知道使用 Excel 中的 Permut 函数总共可以获得 120 种排列 即 PERMUT 6 3 120 但我会实际上喜欢在单元格中进行每
  • C# 相对路径不从工作目录开始

    我有一个 C 程序 它将从相对路径读取文件 report report1 rdlc 但是有时由于未知原因它从完全不同的位置找到了该文件C Windows system32 report report1 rdlc但该文件实际上位于C Prog
  • 客户端的 ASP.NET MVC 多对多模型

    我有 3 个多对多表 Users lt UserRoles gt Roles 我这样设置我的模型 public class User public int UserId get set public IEnumerable
  • 设置 JetBrains YouTrack 以连接到 SVN

    我意识到 TeamCity 一定是 YouTrack 和 SVN 之间的桥梁 但我不需要 Teamcity 的任何功能 我只想通过提交评论发出 Youtrack 命令像这儿 http confluence jetbrains net dis
  • TypeScript 中的“keyof typeof”是什么意思?

    向我解释一下什么keyof typeof在 TypeScript 中的意思是 Example enum ColorsEnum white ffffff black 000000 type Colors keyof typeof Colors
  • bash while循环删除文本文件的最后一行[重复]

    这个问题在这里已经有答案了 当我 cat 这个文件时 我得到 6 行 它是一个 diff 文件 bash 3 00 cat tmp voo 18633a18634 gt sashabSTP 18634a18636 gt sashatSTP
  • 该项目存在于数组中,但它说数组长度为 0?

    我可以将一个项目添加到数组中 并且我可以访问该项目 但是length报告0 Why var arr arr 4294967300 My item console log arr 4294967300 arr length Outputs M
  • 有没有办法使用CSS使用文本作为背景?

    我想使用动态文本作为标签中某些元素的背景 因此 我可以使用图像 动态文本 如何仅使用 CSS 或 JavaScript 来做到这一点 SVG 文本背景图像 body background image url data image svg x
  • 在匹配的正则表达式的一部分上分割字符串(python)

    假设我有一个字符串 ad gt ad gt ad gt gt ad 我想就此分开 gt 不是 gt gt 字符 刚刚拿起正则表达式 想知道是否有一种方法 特殊字符 可以分割匹配表达式的特定部分 而不是分割整个匹配表达式 例如正则表达式可以是
  • 升级到 G++ 4.8 - exception_ptr.h 不支持异常传播

    我正在尝试使用 g 4 8 重新编译一个巨大的遗留应用程序 以便调试glibc detected memory corruption问题 使用 AddressSanitizer 之前我们使用的是 g 4 4 7 但是 编译失败并显示 opt
  • 如何构建 IEnumerable.Contains() 表达式?

    我目前第一次使用 ASP 动态数据 并尝试构建一个过滤器 我们的用户需要根据项目是否是所选父项的子项 我们的项目可以有多个父项 来定位列表中的项目 所讨论的项目是 Segment 每个 Segment 都有一个名为 RouteIds 的属性
  • MySQL 相当于 MS SQL 交叉应用

    如果您习惯了 MS SQL 交叉应用 那么您可能想知道如何在 MySQL 中完成同样的事情 我发现反问句并认为直接的问题可能会帮助任何搜索如何将此功能从 MS SQL 迁移到 MySQL 的人 在此示例中 交叉应用允许您修改字段并在同一查询
  • 正则表达式批量搜索替换

    我想在 Windows 批处理中使用正则表达式模式对一组文件进行搜索 替换 它会是这样的 if the regex matches a line matches then replace it with a new line 我还需要在正则
  • 如何将 SVG 中的路径数据变形为另一个路径数据?

    我试图弄清楚为什么它不会将此路径数据变形为另一个路径数据 我需要使其看起来像真正的动画 这是我的 SMIL 代码
  • 导入 csv 时,Pandas 无法识别一列浮点数

    我正在尝试将国际货币基金组织的统计数据读入 pandas 数据框 import pandas as pd df pd read table http www imf org external pubs ft weo 2013 02 weod
  • php mail() 函数导致 404 文件未找到页面

    我有一个带有 html 表单的简单 php 页面 它的设置是让您填写表格并自动向我的电子邮件发送电子邮件 我没有收到任何电子邮件 并且页面重定向到 找不到文件 404 错误 而不是发生这种情况 这是 PHP
  • Knockout js:如何一次获取所有属性的通知

    假设我有一个包含 100 个 props 的 ViewModel 目前 我需要一个处理程序 如果任何道具发生变化 就会调用该处理程序 当然 我可以为每个属性编写 100 subscribe 但似乎有更好的方法 就像在 C 中一样 您可以绑定
  • 在 Windows 上为 Python 2.7 构建 lxml

    我正在尝试在 Windows 64 位计算机上为 Python 2 7 构建 lxml 我找不到 Python 2 7 版本的 lxml Egg 所以我从源头编译它 我正在按照该网站上的说明进行操作 http lxml de build h