• python开发环境搭建


    python的安装#

    说到安装,少不得要去下载安装包,这里直接给出传送门了
    python2.7.11 32位
    python2.7.11 64位
    python3.5.1 32位
    python3.5.1 64位
    python的官方网站
    需要注意的是,一定要明确知道自己需要的是哪个32位版本还是64位版本。看网上说3.x版本的插件不如2.x丰富,所以我就直接用了2.x版本。

    环境部署#

    1.安装Python,建议在安装过程中将选项"Add python.exe to path"勾上
    2.如果安装过程中忘记勾上了,可以打开”我的电脑->高级系统设置->环境变量"中,将python安装目录以及其子目录Scripts添加到path中
    3.测试安装,在命令行中输入python,显示对应的python版本则为安装成功

    开发工具#

    有关python的开发工具有很多,我在这里介绍几个比较常用的

    Sublime Text##

    可以参考为 Sublime Text 3 设置 Python 的全栈开发环境

    Notepad++##

    可以参考Notepad++配置Python开发环境

    WindIDE##

    WindIDE官方网站传送门
    激活破解方法传送门

    pyCharm##

    pyCharm官方网站传送门
    激活破解方法传送门

    个人感觉pyCharm更酷更好用一点

    按照本文的方法,我想你会很快爱上python的。

    python转换成exe的方法#

    安装步骤##

    · 更新pip到最新版本,使用命令 python -m pip install --upgrade pip

    • 使用pip下载pyinstaller,使用命令 pip install pyinstaller
    • 使用pyinstaller将python脚本转换成执行程序
    • 可以使用 pip install --upgrade pyinstaller更新到最新版本

    打包成一个文件夹##

    当使用PyInstaller打包的时候,默认生成一个文件夹,文件夹中包含所有依赖项,以及可执行文件。打包成文件夹的好处就是debug的时候可以清楚的看到依赖项有没有包含。另一个好处是更新的时候,只需要更新可执行文件就可以了。当然缺点也很明显,不方便,不易管理。

    pyinstaller script.py
    

    那么它是如何工作的呢?PyInstaller的引导程序是一个二进制可执行程序。当用户启动你的程序的时候,PyInstaller的引导程序开始运行,首先创建一个临时的Python环境,然后通过Python解释器导入程序的依赖,当然他们都在同一个文件夹下。

    打包成一个文件##

    我们可以用onefile参数将所有文件打包到一个可执行文件中。

    pyinstaller --onefile script.py
    

    打包成一个文件相对于文件夹更容易管理。坏处运行相对比较慢。这个文件中包含了压缩的依赖文件拷贝(.so文件)。
    当程序运行时,PyInstaller的引导程序会新建一个临时文件夹。然后解压程序的第三方依赖文件到临时文件夹中。这也是为什么一个可执行文件比文件夹中执行的时间要长的原因。剩下的就和上面的一样了。

    spec 文件##

    当你执行下面命令

    pyinstaller options..script.py
    

    PyInstaller首先建一个sepc(specification)文件:script.spec。这个文件的存放地址可以使用参数–specpath= 来定义,默认放在当前文件夹下。
    spec文件的作用是什么呢?它会告诉PyInstaller如何处理你的py文件,它会将你的py文件名字和输入的大部分参数进行编码。PyInstaller通过执行spec文件中的内容来生成app,有点像makefile。正常使用中我们是不需要管spec文件的,但是下面几种情况需要修改spec文件:

    • 需要打包资源文件
    • 需要include一些PyInstaller不知道的run-time库
    • 为可执行文件添加run-time 选项
    • 多程序打包
      可以通过下面命令生成spec文件
      pyi-makespec options script.py [other scripts ...]
      修改完spec文件,就可以通过下面命令来生成app文件了
      pyinstaller options script.spec
      当通过spec文件来生成app文件的时候只有下面几个参数是有用的:
    • –upx-dir=
    • –distpath=
    • –noconfirm=
    • –ascii

    spec 文件解析##

    下面是一个spec文件的例子。

    block_cipher = None
    a = Analysis(['minimal.py'],
            pathex=['/Developer/PItests/minimal'],
            binaries=None,
            datas=None,
            hiddenimports=[],
            hookspath=None,
            runtime_hooks=None,
            excludes=None,
            ciper=block_cipher)
    pyz = PYZ(a.pure, a.zipped_data,
            cipher=block_cipher)
    exe = EXE(pyz, ...)
    coll = COLLECT(...)
    

    spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT.

    • Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息
    • PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖
    • EXE根据上面两项生成
    • COLLECT生成其他部分的输出文件夹,COLLECT也可以没有

    修改spec文件##

    我们上面说过有时候PyInstaller自动生成的spec文件并不能满足我们的需求,最常见的情况就是我们的程序依赖我们本地的一些数据文件,这个时候就需要我们自己去编辑spec文件来添加数据文件了。
    上面的spec文件解析中Analysis中的datas就是要添加到项目中的数据文件,我们可以编辑datas.

    a = Analysis(
        ...
        datas = [('you/source/file/path','file_name_in_project'),
        ('source/file2', 'file_name2')]
        ...
        )
    

    可以认为datas是一个List,每个元素是一个二元组。元组的第一个元素是你本地文件索引,第二个元素是拷贝到项目中之后的文件名字。除了上面那种写法,也可以将其提出来。

    added_files = [...]
    
    a = Analysis(
        ...
        datas = added_files,
        ...
        )
    

    其他的二进制文件添加方法类似。

    总结##

    最后简单来说,我们要通过PyInstaller生成可执行的文件主要下面两步。
    pyinstaller [option] mypython.py
    option为空生成文件夹,选择onefile,生成一个文件。
    如果项目有一些依赖的数据文件,上面生成的二进制文件是无法运行的,这个时候可以通过修改spec文件,让后再用pyinstaller运行spec文件。
    pyinstaller [option] mypython.spec
    当然也按上文那样先生成spec文件。

  • 相关阅读:
    Ansible facts
    K8S基础概念
    Ansible CMDB
    Docker 核心技术与实现原理
    如何在 Centos7 中使用阿里云的yum源
    一篇文全面了解DevOps:从概念、关键问题、兴起到实现需求
    关于操作stream流
    service not available now, maybe disk full, CL: 0.95 CQ: 0.95 INDEX: 0.95, maybe your broker mach
    AOP的底层实现,动态代理和cglib代理
    模拟浏览器加载静态资源
  • 原文地址:https://www.cnblogs.com/sanghg/p/5554430.html
Copyright © 2020-2023  润新知