Windows 上的 Python - 编译

Posted

技术标签:

【中文标题】Windows 上的 Python - 编译【英文标题】:Python on Windows - compiling 【发布时间】:2015-08-25 00:02:04 【问题描述】:

像我之前的许多人一样,我没有成功在 Windows 上安装一些 Python 包(mysql、pycld2 等)。我有一台 Windows 8 机器、64 位和 Python 3.4。起初,我收到了众所周知的错误“找不到 vcvarsall.bat - 安装 VS C++ 10.0”。我试图通过安装 MinGW 并将其用作编译器来解决这个问题。这没有用。最后我在http://microsoft-visual-cpp-express.soft32.com/free-download/ 找到了这个 VS C++ 10.0 的安装程序。这也不太好。现在它似乎找到了 vcvarsall 文件,但却给了我一些新错误

nclude -IC:\Python34\include /Tc_mysql.c /Fobuild\temp.win32-3.4\Release\_mysql.
obj /Zl_mysql.c_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':
No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN\\cl.exe' failed with exit status 2

还有:

pycldmodule.cc
bindings\pycldmodule.cc(16) : fatal error C1083: Cannot open include file: '
strings.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\BIN\\cl.exe' failed with exit status 2

所以现在它找不到 strings.h 和 config-win.h,而且我对这类问题太陌生了,不知道要寻找什么。有谁知道我应该怎么做?

问题是我不能使用 Windows 而是转到 Ubuntu,因为据我所知,使用 python 可以轻松工作。但是,我必须使用 Ubuntu 上不存在的 win32com 软件包(我理解对了吗?)。 如果我不能在 Windows 上解决这些安装麻烦,解决方案是使用 Windows 虚拟机作为 win32com 部分,然后在主机 Ubuntu(或其他方式)上完成其余的工作吗?在这种情况下,两者之间是否还有沟通? IE。发送字符串或数据数组。

【问题讨论】:

【参考方案1】:

我在尝试安装 pycld2 的 64 位 Windows 上遇到了与 Python 2.7 完全相同的问题。

尝试了很多方法,例如安装 VS express 2008、MingW 等,但都不起作用。

拯救我的是这个链接: https://github.com/aboSamoor/polyglot/issues/11

建议的解决方案是从 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 下载二进制文件并 pip install .whl

cpXX 表示 python 的版本。所以就我而言,我使用了 cp27。

希望对你有帮助

【讨论】:

【参考方案2】:

我建议安装 Ubuntu(作为 Ubuntu 用户),您可以双启动。但是,这不是答案。

MySQLClient(Python3 的分支)可从此处获得预编译的二进制文件: http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

为简单起见,尝试查找预编译的二进制文件。就安装故障排除而言,我在全新安装时尝试了推荐的 VC Studio 9.0,但它找不到 stdint.h(与您的一样,表明它不仅仅是损坏)。

【讨论】:

微软的编译器实现了C89,所以没有C99 stdint.h。而strings.h 是一个POSIX/Unix 头文件。 我实际上已经得到了那个。但我确实在底部找到了 pycld2,这是我上次访问该网站时错过的!希望我现在能到达某个地方。 @Alexander,是否可以在虚拟机中使用 Ubuntu 作为主机、Windows 并让它们相互连接/通信? IE。在两者之间发送数据。很好,无需一直重新启动计算机(如双启动所必需的),能够使用虚拟机上的 win32com 软件包进行编程,同时拥有 Ubuntu 的所有优点,即做所有那里有其他节目。 @user2069136,您可以使用套接字,例如见socketserver。【参考方案3】:

您可以尝试在 Windows 上使用 http://www.activestate.com/activepython/downloads。它包括已编译的二进制文件,无需 C 编译器。

【讨论】:

好建议,请注意,pypm 存储库中没有 pycld2 的预编译二进制文件。 感谢您的提示!我会看看它可以做什么,即使我不确定它是什么。标准 Python,但同时有一些特殊类型?【参考方案4】:

我对尝试让 python 和其他包在 Windows 上也能很好地编译/播放感到沮丧。切换到 Ubuntu 无疑是一股清新的空气。

win32com 包是专门为 Windows 主机制作的,因此无法再使用,但在 Ubuntu 中还有其他方法可以实现相同的功能。

您是否正在尝试专门针对 Windows?你用 win32com 做什么?

【讨论】:

【参考方案5】:

看起来您缺少 MySQL 开发包。另一个*** question 有详细信息。但如果我是你,我会走 Alexander Huszagh 推荐的路线,从 http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 获取我的预编译二进制文件

【讨论】:

以上是关于Windows 上的 Python - 编译的主要内容,如果未能解决你的问题,请参考以下文章

flask+mod_wsgi+apache在windows上的布署

Visual Studio 2010 win32 编译的应用程序在 windows xp 上不起作用

图计算库 igraph 在 windows 10 上的编译安装

图计算库 igraph 在 windows 10 上的编译安装

图计算库 igraph 在 windows 10 上的编译安装

寒江独钓windows内核安全编程 那个first程序在win7下能跑起来吗