看到了很多把python工程打包为.exe的方法介绍,但是没有最新的一些打包为.whl供pip直接下载安装的教程,这里结合2015年的打包方法介绍一下如何将python工程打包为.whl包并上传:
**(1)**在需要打包的工程文件夹外面再建立一个同名文件夹,结构如下,此处示例工程名为:
packagedemo
|-----setup.py
|-----setup.cfg
|-----README.rst
|-----packagedemo
|-----__init__.py
|-----main.py
**(2)**在上图目录中新建文件setup.py,setup.cfg,README.rst,其中setup.py是最为重要的文件,包含了打包的参数和基本信息,setup.cfg是setup.py的配置文件,README.rst用于项目介绍。
**(3)**打开setup.py,输入以下内容:
import os
import setuptools
setuptools.setup(
name = 'packagedemo',
version = '1.0',
keywords = 'demo',
description = 'A demo for python packaging',
long_description = open(
os.path.join(
os.path.dirname(__file__),
'README.rst'
)
).read(),
author = 'your name',
author_email = 'xxxxx@xxx.com'
url = 'http://xxx/xxxx/packagedemo',
packages = setuptools.find_packages(),
license = 'MIT'
)
name:即项目名称,本例为packagedemo
version:自己设置的版本号
keywords:描述项目的关键字
description:项目简介
long_description:项目详细简介
author:作者名称
author_email:作者邮箱
url:项目的homepage
packages:项目包括的python package,setuptools.find_packages()可以自动找出包含的package
license:如MIT,APACHE,GNU等
**(4)**采用pip可安装source distribution(sdist)和wheel这两种格式python package,如果二者同时存在,pip会优先选择wheel。根据application包含的的代码类型以及所支持的python版本,wheel格式可以细分为三种:
Universal wheel: 纯 python代码,并且支持 python 2和3
Pure python wheel: 纯python代码,不同时支持 python2和3
Platform wheel: 非纯python 代码
采用如下命令可编译为Universal wheel:
python setup.py bdist_wheel --universal
采用如下命令可编译为非Universal wheel(即第二种和第三种):
python setup.py bdist_wheel
此外,还可以通过如下命令编译为sdist文件:
python setup.py sdist
**(5)**现在要将打包好的工程上传到pypi,首先要安装twine:
pip install twine
在pypi创建一个账户,并把packagedemo.egg-info/PKG-INFO上传至pypi submit用于注册该项目。之后在Wndows用户目录下创建.pypirc文件,输入以下内容:
[distutils]
index-servers = pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>
其中用户名和密码填写自己pypi账户的名字和密码。
最后使用如下命令上传package:
twine upload dist/*