我开始了一些项目在文字处理,我需要NumPy和NLTK。这是我第一次知道easy_install
和如何编译新模块的python到系统中。
我有Python 2.7 x64加上VS 11和VS 12。还有Cygwin(我猜是最新的)。我可以看到在使用VS编译的文件中,它查找与编译python代码的版本相同的VS env,为什么?当我硬编码11.0(我的版本)时,numpy无法构建关于vcvarsall
的几个奇怪的错误(它找到了vcvarsall
,可能是误用了它)。
我不能在Windows上编译python二进制文件吗?如果不能,我可以在Linux for Windows上交叉编译吗?(使用与Google for Android SDK相同的方法)
6条答案
按热度按时间fumotvh31#
***更新:*这个答案已经超过5年了!Python-2.7即将被弃用,所以你真正需要的是一个用于Python-3的Microsoft Visual C编译器。看看this Python wiki on MS Windows Compilers。带有VC-14.0的MS Build Tools 2015是你构建Python-3.5和3.6扩展所需要的。你可以安装包含VC-14.0的旧版MS build tools 2015,也可以安装包含VC-14.0的新版MS build tools for 2017-单击链接,然后向下滚动,直到找到同样包含VC-14.0的Visual Studio 2017构建工具。
***更新:*正如下面提到的Zooba,free x86 and AMD64 (x86-64) VC90 c-compilers for Python-2.7 are now available from Microsoft。
***更新:*修补
vcvarsall.bat
,以便在任何shell中直接将SDK v7.0中的x64编译器与pip
一起使用,而不是使用SDK shell并按以下说明设置DISTUTILS_USE_SDK
与MSSdk
环境变量。请参阅Fix vcvarsall.bat to install Python-2.7 x64 extensions with v90 instead of sdk7。***tl;dr:**使用Windows SDK 7.0版编译器,打开SDK shell 程序并调用 *
pip
或easy_install
构建Python 2.7.x扩展。请参见Python x64 Package Extensions with pip, MSVC 2008 Express & SDK 7。*msvcr90.dll
for Python-2. 7)。现在我们来讨论一下关于在Windows 7 x64上安装Python扩展的主要问题。
推荐的编译扩展的方法是使用编译Python共享库的编译器[1-3]。official Python 2.7.x for Windows是使用Microsoft Visual C++ Compilers version 9.0 [4] (aka MSVC90 or simply VC90) from Microsoft Visual Studio 2008 Professional编译的,你可以从Microsoft DreamSpark免费获得。显然,默认情况下没有安装x64编译器,所以请确保它们与x86编译器沿着安装。* 注意:MS Visual Studio 2008可能不再可用,但如果已安装,MS Visual Studio 2010将允许您使用MSVC 90工具链,该工具链可从Windows SDK 7安装。*
当你从命令行执行python解释器时,你可以通过查看头来判断你的Python是用什么版本构建的。* 例如 *:
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win32
意味着它是用VS 2008 C++构建的。你可以自己从源代码构建Python,但这也是一项艰巨的任务。通常不建议混合编译器运行时,尽管在实践中你可能会发现它们仍然有效。如果您一心想使用GNU GCC,那么您就必须使用mingw-w64,因为MinGW仅适用于本机x86应用程序,而不适用于AMD 64/x86-64。
pexports.exe
从msys或gendef.exe
从msys 2导出一个库定义文件,并使用dlltool.exe
(msys/msys 2)创建一个静态库libpython27.a
(但是最新版本的官方Python for Windows已经在Python27\lib
文件夹中有这个文件,谢谢!)。但是,最终您 * 仍然 * 需要链接到构建python时使用的运行时
msvcr90.dll
,因此您将需要Visual C++ 2008 redistributable。* 注意:来自mingw-w 64的Windows GCC使用msvcrt.dll
,这与msvcr90.dll
或更高版本不同。*如果你想免费安装,你可以使用Microsoft Visual C++ 2008 Express SP1,但你需要添加Windows SDK 7 for .NET Frameworks 3.5 SP1,因为Express版本没有x64编译器。使用VS 2008 Express & SDK 7安装x64 C++扩展的过程与cython site for windows x64 extensions上的过程非常相似。* 注意:不再提供或不再支持MS Visual Studio 2008学习版。*
仅供参考:您不一定需要Visual Studio来使用Microsoft编译器进行编译。它们可以随相应的SDK包免费提供。
CL.EXE
是编译器可执行文件,但您必须设置通常由Autotools或其他工具(如CMAKE)配置的任何平台选项。CMAKE与MSVC配合使用效果很好,但是Autotools AFAIK不能与MSVC一起使用,并且需要一些POSIX环境和实用程序,而Windows上的这些环境和实用程序在MSYS中可用。对于许多使用distutils或setuptools的Python包,它们可以按照参考文档和wiki中各个位置发布的说明,使用Windows SDK 7编译扩展:
1.从**“开始”菜单中选择所有程序**,然后选择Microsoft Windows SDK v7.0,并启动CMD Shell以打开针对Windows SDK优化的命令窗口。
1.第1步相当于从开始菜单或命令提示符(aka
C:\Windows\System32\cmd.exe
)在运行框中键入以下内容:注意:
/E:ON
(启用命令扩展)和/V:ON
(启用延迟变量扩展)标志对于SetEnv.cmd
的功能都是必需的,否则您将收到x64编译器未安装的消息。1.然后键入
setenv /Release /x64
,这将设置专门用于Windows 7 x64版本的SDK环境变量(相对于默认的debug或x86)。1.键入
set DISTUTILS_USE_SDK=1
并按回车键,然后键入set MSSdk=1
并按回车键,以告诉distutils.msvccompiler
您正在使用SDK,并且SDK将确定所有环境变量。pip install pyyaml ntlk
,这是建议的方式,see ntlk,但您必须安装setuptools和pip。python setup.py install
,用于每个已下载、已解压缩的压缩包easy_install pyyaml ntlk
这是旧的方法,也是安装egg的唯一方法。[1][Building C and C++ Extensions on Windows](http://docs.python.org/2/extending/windows.html)显示器
[2]微软编译器
[3]Python开发指南:开始使用:视窗
[4][What version of visual studio is this python compiled with](https://stackoverflow.com/questions/2676763/what-version-of-visual-studio-is-this-python-compiled-with)显示器
qvk1mo1f2#
在其他的答案之后,微软发布了一个编译器包,专门用于构建Python 2.7(以及任何使用VS 2008/VC 9的Python版本)的扩展。
1.转到http://aka.ms/vcpython27,下载并安装软件包(它相当小,不需要管理员权限)
1.将setuptools更新到6.0或更高版本(
pip install -U setuptools
)1.安装软件包(
pip install <whatever>
)最新的setuptools版本和这个编译器包的组合应该会让这件事变得非常容易。
6mw9ycah3#
显然有几种方法可以做到。
1.使用mingw构建
1.使用VS 2008 Express构建Python 2.7。
1.我不知道哪个版本是好的建立3.2,但它可能是VS 2010。
1.你可以使用你想要的VS从源代码编译python x64,但是你会遇到与其他预构建包的兼容性问题。
eqzww0vc4#
这对我来说效果最好:
1.安装
Visual Studio Express 2008
1.从http://www.microsoft.com/en-us/download/details.aspx?id=3138安装
Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1
1.转到
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin
并打开Visual Studio 2008 x64 Win64 Command Prompt
1.在该shell中,运行
pip install <package>
这样做时,您应该不必在客户端系统上安装任何可再分发的软件包。
xuo3flqw5#
对于Windows 10、Python 2.7.11、Cygwin 2.5.2和x86_64-w 64-mingw 32-gcc 4.9.2或5.4.0(但请参见下面1下的note),将其他地方的注解整合在一起,下面是我必须为Python扩展做的事情,以编译、链接和克服msvcrt.dll和msvcr90.dll之间的争用条件:
class Mingw32CCompiler
对于gcc 4.9.2 --注对于5.4.0,没有“如果”,只是
*注意对于x86_64-w 64-mingw 32-gcc 5.4.0,似乎不使用 * msvcr 90时效果更好,因此使对
get_msvcr
的调用有条件:上面的一些可能不是很好的地方,但它让我的扩展工作...
gorkyyrv6#
如何在Visual Studio代码上安装nltk?我正在训练编写pip安装nltk,但没有成功😣😣,我真的需要帮助