少说话多写代码之Python学习066——python程序打包01 编译安装

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yysyangyangyangshan/article/details/85240880

程序开发完成后,我们需要部署给用户使用,一般我们都会将其打包。比如大家在使用windows系统时,安装QQ、微信、除IE外的各种浏览器、看视频软件、word等,都会先下载一个安装包,一般是都是一个EXE或者有多个文件夹的文件,里面包含了一个exe。我们点击exe后,按照提示一步一步,往下安装。

Python中其实也可以按这种打包的。有一个工具是Distutils。我们来看看它的使用。

在我的工程目录下,以我的本地电脑为例。新建一个文件夹MyFirstPackingTest,于是这个目录在我本地的完整目录是:D:\work\Python\MyFirstPackingTest。
在文件夹中新建一个PythonSetup.py文件,里面有如下代码。

#PythonSetup.py
setup(name='你好',
      version='V1.0.0.0',
      description='这个是一个安装程序的例子',
      author='杨友山',
      py_modules=['PythonPackingTest'])

其中,PythonPackingTest是一个文件,也在这个目录下,里面是这样的代码:

#!/usr/bin/python
# -*-coding:UTF-8 -*-

#PythonPackingTest.py
def PrintContent():
    content =['君自故乡来','应知故乡事','来日绮窗前','寒梅著花未']
    print(content)
if __name__=='__main__':PrintContent()

这时如果直接在编译器中单独运行PythonSetup.py,会报错。
usage: PythonSetup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
   or: PythonSetup.py --help [cmd1 cmd2 ...]
   or: PythonSetup.py --help-commands
   or: PythonSetup.py cmd --help

error: no commands supplied
我们需要在cmd中运行编译命令,命令如下,

python D:\work\Python\MyFirstPackingTest\PythonSetup.py  build

还是会报错,如图,

报错内容如下。

C:\Users\youshanyang>python D:\work\Python\MyFirstPackingTest\PythonSetup.py  bu
ild
running build
running build_py
file PythonPackingTest.py (for module PythonPackingTest) not found
file PythonPackingTest.py (for module PythonPackingTest) not found

PythonSetup.py中的代码py_modules=['PythonPackingTest'] 找不到目录。这里就需要用到我们前面学习的模块的知识。需要将sys和os模块引入进来。然后将我们的工程目录加入到系统路径中。
PythonSetup.py中的代码改进如下,

#PythonSetup.py
from distutils.core import setup
import sys
print(sys.path)
import os
os.chdir('D:/work/Python/MyFirstPackingTest/')
#打印出当前项目路径下的目录
for file in os.listdir(os.getcwd()):
     print(file)
#将项目路径保存
sys.path.append('D:/work/Python/MyFirstPackingTest/')

setup(name='你好',
      version='V1.0.0.0',
      description='这个是一个安装程序的例子',
      author='杨友山',
      py_modules=['PythonPackingTest'])

此时再运行build编译命令。

命令:python D:\work\Python\MyFirstPackingTest\PythonSetup.py  build

输出内容:

C:\Users\youshanyang>python D:\work\Python\MyFirstPackingTest\PythonSetup.py  bu
ild
['D:\\work\\Python\\MyFirstPackingTest', 'D:\\Python\\python36.zip', 'D:\\Python
\\DLLs', 'D:\\Python\\lib', 'D:\\Python', 'D:\\Python\\lib\\site-packages']
PythonPacking.py
PythonPackingTest.py
PythonSetup.py
running build
running build_py
creating build
creating build\lib
copying PythonPackingTest.py -> build\lib

在新建的MyFirstPackingTest目录下,创建了build\lib目录,并且将PythonPackingTest.py复制到此处。此时编译的动作完成了。

我们再试试安装这个模块。运行install命令。

详细输出如下,

C:\Users\youshanyang>python D:\work\Python\MyFirstPackingTest\PythonSetup.py  in
stall
['D:\\work\\Python\\MyFirstPackingTest', 'D:\\Python\\python36.zip', 'D:\\Python
\\DLLs', 'D:\\Python\\lib', 'D:\\Python', 'D:\\Python\\lib\\site-packages']
build
PythonPacking.py
PythonPackingTest.py
PythonSetup.py
running install
running build
running build_py
running install_lib
copying build\lib\PythonPackingTest.py -> D:\Python\Lib\site-packages
byte-compiling D:\Python\Lib\site-packages\PythonPackingTest.py to PythonPacking
Test.cpython-36.pyc
running install_egg_info
Writing D:\Python\Lib\site-packages\_-V1.0.0.0-py3.6.egg-info

说明下,我的Python环境安装目录就在D:\Python。根据安装提示,
安装目录D:\Python\Lib\site-packages\下 有PythonPackingTest.py文件,

文件_-V1.0.0.0-py3.6.egg-info中信息如下,

Metadata-Version: 1.0
Name: 你好
Version: V1.0.0.0
Summary: 这个是一个安装程序的例子
Home-page: UNKNOWN
Author: 杨友山
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN

执行了一个简单的编译和安装的过程。后面我们继续看打包。

工程文件下载:https://download.csdn.net/download/yysyangyangyangshan/10873852

猜你喜欢

转载自blog.csdn.net/yysyangyangyangshan/article/details/85240880