Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)

近期需要做一个python工具,供其他模块使用,就涉及了自定义模块的导入。
这边就主要是做一个备忘…不纠结格式了

一、准备工作:

1、确定 __init__.py 文件

首先我们需要明确下我们的目的,是将我们需要的文件打包成模块,使之可以被 pip install 简单的安装,被 import 方便的调用。

那我们先确定下我们需要打包的模块:
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第1张图片
MyPack(忽略我的test文件夹)是我们想要打包出来的一个模块。它包含了__init__.py文件以及我们自己写的一些.py文件。这里需要说明的一点是,__init__.py 文件是不能省的。

__init__.ty 的主要作用:

  1. 标识出该目录为 “Python模块”
  2. 方便模块导入
  3. 配置模块的初始化操作

其实具体的作用描述网上很多,可以参考这篇文章。

2、创建 setup.py 文件

接下来我们需要一个打包用的脚本 setup.py,这个文件主要是用来控制打包过程的各项参数,其中的内
容很多,没必要全部填入,我就写了这么几个:

from distutils.core import setup

setup(
    name='MyPackage',		# 包文件名
    version='1.0',
    description='这就是个描述',
    author='YiZhe',
    author_email='[email protected]',
    py_modules=['MyTest.MyModule']	# 这里添加需要打包的所有文件
)

参数详解

二、执行打包命令

1、build

第一步,执行打包,命令为:python setup.py build

这步执行完成后,我们可以看到添加了一个build目录:
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第2张图片
这里我们要注意的是,执行这条命令不能偷懒,只输入setup.py文件路径,它是不认识的…
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第3张图片

2、sdist

接下来就是分配了, 命令为:python setup.py sdist

这条命令执行完成之后,可能会显示这样的内容:
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第4张图片
这里就显示出,之前我们文件中少写的很多参数,它都提出警告内容。(但没关系,就当没看到…)

我们看回目录,多了dist 文件夹,并且文件夹中多了我们需要的 MyPackage-1.0.tar.gz 包
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第5张图片

三、测试安装

命令: pip install dist\MyPackage-1.0.tar.gz
Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第6张图片
然后,我们调用试下:

Python自定义模块的打包方式 (failed to execute pyi_rth_pkgres 的解决方法)_第7张图片
完成!

溜了溜了… …

————————————————————

哎,等等,记录下后来遇到的一个报错问题:

问题: " failed to execute pyi_rth_pkgres "
可能原因:python 3.0.0 版本的 pyInstaller 的问题
解决方式:卸载重装 pyInstaller,从gitHub直接安装:
命令:
pip uninstall pyinstaller
pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
需要注意的是,重新打包前需要先删除之前打包的时留下的 build 和 dist 文件夹,以及 xxx.spec 文件

你可能感兴趣的:(Python,python)