pyscaffold建立项目管理

pyscaffold

新建一个python项目的管理软件。一个命令就可以putup my_project即可。
PyScaffold helps you to easily setup a new Python project.

安装

三种方法:

pip install pyscaffold
pip install pyscaffold[all]
conda install -c conda-forge pyscaffold

我试过第一种,发现有时候会遇到bug,your setuptools version is too old (<12).
但是pip install -U setuptools无法解决问题。这与pyscaffold的版本有关。为了方便的解决这些。我直接利用了第三种方法。毕竟这地方不是我们的重点。

最后的requirement

annoy               1.15.2
bert-serving-client 1.9.1
certifi             2019.6.16
faiss               1.5.3
pip                 19.2.2
pyarrow             0.14.1
PyScaffold          3.2.1
setuptools          41.2.0
six                 1.12.0
wheel               0.33.4

新建python项目

putup my_project

这时候就有了模板话的python项目,有文档、作者、代码、测试等。
如下:

AUTHORS.rst      
LICENSE.txt      
docs             
setup.cfg       
src
CHANGELOG.rst   
README.rst      
requirements.txt 
setup.py         
tests

为什么需要模板,是因为简单快捷,而且这些部分一般情况下都需要,是为了更好的把这个项目标准化。

其他操作

python setup.py docs 文档化
python setup.py test (python setup.py test --addopts -h) 测试py.test里的东西
后面pip install -r requirement.txt则会在其他项目安装。

为了简单,只要修改setup.py就可以了

打包

Source Distribution Package(源码打包)

This will create a source “tarball” package.

python setup.py sdist

Binary Distribution Package(二进制打包)

This will create a binary architecture-dependent package.

python setup.py bdist

个人喜好只改setup.py

VERSION = "1.0.0"

setup(
    name='xx1',
    version=VERSION,
    description='xx2',
    url="xx3",
    long_description="test for pyscaffold",
    author='xx4',
    author_email='xx5',
    install_requires=["six", "pyscaffold", "sphinx","boto3","pandas","modelhub"]

)

如何发布到仓库repository

twine upload -r pypi-xx dist/your_project-1.0.1.tar.gz

总结

  1. pyscaffold模板化利于管理
  2. python setup.py test/install/sdist/bdist等来对源码测试、安装到本地、打源码包,打发布包
  3. 打包的时候需要meta信息,为了更简单,可以直接在setup.py里的setup里直接写。简单。
  4. 然后发布到远程仓库

参考文献

https://pypi.org/project/PyScaffold/
https://lingxiankong.github.io/2013-12-23-python-setup.html
https://github.com/pyscaffold/pyscaffold/
https://pypi.org/project/twine/

你可能感兴趣的:(基础知识)