专栏首页python3Windows下面制作绿色版的Pytho

Windows下面制作绿色版的Pytho

首先在某个地方安装安装版的Python,比如虚拟机里,我装的是“python-2.7.1.msi”,然后把安装目录整个拷过来备用。之所以安装版无法做成绿色版,是因为其中的三个主要文件“python.exe”、“pythonw.exe”和“python27.dll(安装在system32目录中)”都依赖于“msvcr90.dll”这个非常恶心的东西。我们需要把它绿色化。 下载并解压缩源代码包,我下载的是“Python-2.7.1.tar.bz2”,然后进入“PCbuild”目录,用Visual Studio 2008打开“pcbuild.sln”文件,注意,“PC”目录下面还有一些早期版本Visual Studio的工程文件,我试过VC6的,根本无法编译,其它没试,不过既然官方都用2008的,那我们也跟着用就是了。 我的Visual Studio 2008装了SP1,编译其中的“python”、“pythoncore”和“pythonw”三个项目得到“python.exe”、“pythonw.exe”和“python27.dll”三个文件,替换备用目录中同名的文件,然后把Visual Studio 2008安装目录中的“VC\redist\x86\Microsoft.VC90.CRT”目录中的“msvcr90.dll”和“Microsoft.VC90.CRT.manifest”也拷到备用目录中,再把备用目录整个拷到一个干净的环境中。执行python.exe,却出错了:无法启动!用Depends工具观察,报依赖错误! 回过头检查编译生成的manifest文件才发现,原来虽然Visual Studio 2008装了SP1,按理CRT已经升级到了9.0.30729.4148版,但是manifest里链接的还是9.0.21022.8版!所以只能将“python”、“pythoncore”和“pythonw”三个项目的属性作如下设置:

然后重新编译后,manifest文件就独立出来而不是嵌在程序中了,最后得到“python.exe”、“pythonw.exe”、“python27.dll”和相应的manifest文件“python.exe.manifest”、“pythonw.exe.manifest”、“python27.dll.manifest”,整个拷到备用目录中替换原来的文件。 用文本编辑器打开“python.exe.manifest”、“pythonw.exe.manifest”、“python27.dll.manifest”和“Microsoft.VC90.CRT.manifest”四个manifest文件,把前三个文件中的“assemblyIdentity”中的“version”和“publicKeyToken”修改成和“Microsoft.VC90.CRT.manifest”保持一致 OK!再次执行python.exe,一切正常了! 最后在备用目录中新建一个批处理文件“console.bat”,内容为: @echo off cd /d %~dp0 set PATH=%CD%;%PATH% start cmd.exe 以后直接执行该批处理文件就能得到一个设置好环境变量的Shell了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python2.x和python3.x共

       下载完成之后,解压到python3所在的安装目录,用CMD控制台进入解压目录,输入:

    py3study
  • python正则表达式

    py3study
  • ubuntu12.04安装python3

    默认系统已经自带了python2.7。在安装python3.5的时候,不要将python2.7的版本删掉,因为系统本身有很多功能都是需要python2.7的支持...

    py3study
  • Win10下python3和python2多版本同时安装并解决pip共存问题

    特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。

    拓荒者
  • Win10下python3和python2同时安装并解决pip共存问题 Win10下python3和python2同时安装并解决pip共存问题

    特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。

    北京-宏哥
  • Python正则表达式re模块简明笔记

    IT故事会
  • Python 正则表达式

    ? 简介 正则表达式(regular expression)是可以匹配文本片段的模式。最简单的正则表达式就是普通字符串,可以匹配其自身。比如,正则表达式 ‘h...

    小莹莹
  • python正则表达式

      正则表达式(regex)是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

    yaohong
  • ubuntu12.04安装python3

    默认系统已经自带了python2.7。在安装python3.5的时候,不要将python2.7的版本删掉,因为系统本身有很多功能都是需要python2.7的支持...

    py3study
  • 从零开始编写网络游戏--基础篇(1)

           最近2周比较忙,没有抽出时间来写Blog,不过在这段时间里面把整个思路理了一遍,梳理了一下大纲,以后会多抽时间来写Blog。

    帘卷西风

扫码关注云+社区

领取腾讯云代金券