markdown Python分发包到网络,打包

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown Python分发包到网络,打包相关的知识,希望对你有一定的参考价值。

参考: <<Python Cookbook>>第三版 10.15小节

发布一个python包到网上, 需要以下步骤:

> 按照以下目录层级来组织package:

```bash
projectname/
  MAINFEST.in
  setup.py
  README.txt 
  Doc/ 
    documentation.txt 
  projectname/ 
    __init__.py 
    foo.py 
    utils/ 
      __init__.py 
        spam.py 
  examples/ 
    helloworld.py 
    ...
```

> setup.py

注意: 

- 其中packages要列出所有的source packages, 也就是所有的含有\_\_init\_\_.py文件的文件夹(子文件夹也需要列出来).
- 最外层的文件夹通常仅仅是用来打包的, 源码的根文件夹往往要放在下一层级, 因为还有其他非源码的文件要放, 比如README.txt, setup.py等.

```python
# setup.py 
from distutils.core import setup

setup(
  name='projectname', 
  version='1.0', 
  author='Your Name', 
  author_email='you@youraddress.com', 
  url='http://www.you.com/projectname', 
  packages=['projectname', 'projectname.utils'], 
)
```

> MANIFEST.in

将非源码的文件(夹)列在此文件中

```bash
# MANIFEST.in
include *.txt
recursive-include examples *
recursive-include Doc *
```

> 运行打包指令

```bash
% bash python3 setup.py sdist
```

会打成一个`projectname-1.0.zip`或者是`projectname-1.0.tar.gz`, 然后就可以分发给别人或者上传到[PyPI](https://pypi.org/)上了.

注意: 以上打包方式仅适用于纯python实现的代码, 如果代码中有C扩展, 需要进行额外的操作, 本篇不涉及.

一个快速的打包方式就是将依赖导入到requirements.txt文件中, 然后在目的地安装:

你可以用pip导出你的dependency:

```bash
$ pip freeze > requirements.txt # or use pipreqs
```
然后在通过以下命令安装dependency:

```bash
$ pip install -r requirements.txt
```

参考链接:

- [python 如何连同依赖打包发布以及python的构建工具](https://www.zhihu.com/question/21639330)

以上是关于markdown Python分发包到网络,打包的主要内容,如果未能解决你的问题,请参考以下文章

Python打包分发工具setuptools

使用 twine 上传自己的 python 包到 pypi

Python重新打包现有的分发包

Python打包分发工具setuptools

如何打包和分发 python 程序(.py 源代码),以便其他开发人员可以轻松安装所有需要的依赖项?

全面学习 Python 包:包的构建与分发