0%

创建wheels

由于在开发3D位移平台时,需要使用到MPS010602,但是因为MPS010602是一个独立的项目(目前还在开发),因此正好学习一下如何打包为wheel库,以及其中遇到的一些问题

源代码整理与__init__.py

首先,我们要把源代码放置在一个文件夹中,并且需要有一个__init__.py

__init__.py应当如何编写,这篇文章写得很清楚,可以去参考一下

目前我就采用最为简易的方式

如果目录结构是这样

1
2
3
4
5
---MPS010602(import时所用的名称)
|-__init__.py
|-DriverOperator.py
|-MPSDataType.py

那么在__init.py__中,为了方便(不需要引用子文件名),可以这么写

1
2
from MPS010602.MPSDataType import *
from MPS010602.DriverOperator import *

需要注意在两个源文件中如果出现了交叉引用,需要修改import格式

setup.py

在放置代码的文件夹外,新建一个setup.py,然后填写以下内容

1
2
3
4
5
6
7
8
9
10
import setuptools
setuptools.setup(
name='mps010602',
version='0.0.0',
description='This is a program for MPS-010602',
author='songyuli',
author_email='',
packages=setuptools.find_packages(),
package_data={'':['*.dll'],}
)

其他部分都很简单,除了两个需要注意的地方:

  1. 包名称和import时使用的名称不同
  2. package_data包含了你希望包含的除了源代码以外的内容(例如说使用的动态链接库)

构建与安装

在这一文件夹下,输入python setup.py bdist_wheel,之后在dist文件夹内可以看见编译好的whl文件,然后文件用pip install可以直接安装

为了未来后续开发方便,建议一个环境开发,一个环境测试

其他的一些问题

我之前在引用动态链接库时遇到问题(因为工作目录发生改变)

因此获取自己当前的位置,可以通过os.path.dirname(os.path.abspath(__file__))访问当前所在文件夹