พัฒนาแพ็กเกจได้เร็วขึ้นด้วยเทมเพลต

การพัฒนา Python Packages

James Fulton

Climate informatics researcher

เทมเพลต

  • แพ็กเกจ Python มีไฟล์เสริมจำนวนมาก
  • มีรายละเอียดที่ต้องจำมาก
  • การใช้เทมเพลตช่วยจัดการส่วนนี้ได้

โครงสร้างไฟล์ของแพ็กเกจ

.
|-- example_package
|   |-- __init__.py
|   `-- example_package.py
|-- tests
|   |-- __init__.py
|   `-- test_example_package.py
|-- README.rst     <-
|-- LICENSE        <-- lots
|-- MANIFEST.in    <-- of
|-- tox.ini        <-- additional
|-- setup.py       <-- files
`-- setup.cfg      <--
การพัฒนา Python Packages

cookiecutter

  • ใช้สร้างแพ็กเกจ Python เปล่าได้
  • สร้างไฟล์เสริมที่แพ็กเกจต้องการให้ครบ

โครงสร้างไฟล์ของแพ็กเกจ

.
|-- example_package
|   |-- __init__.py
|   `-- example_package.py
|-- tests
|   |-- __init__.py
|   `-- test_example_package.py
|-- README.rst
|-- LICENSE
|-- MANIFEST.in
|-- tox.ini
|-- setup.py
`-- setup.cfg
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter <template-url>
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
full_name [Audrey Roy Greenfeld]:
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
full_name [Audrey Roy Greenfeld]: James Fulton




  • พิมพ์ชื่อแล้วกด Enter/Return เพื่อดำเนินการต่อ
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
full_name [Audrey Roy Greenfeld]: James Fulton

email [[email protected]]: [email protected] github_username [audreyr]: MyUsername
project_name [Python Boilerplate]: mysklearn project_slug [mysklearn]: mysklearn
  • Project slug — ชื่อ name ที่ใช้ใน pip install name
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
...
project_short_description [Python Boilerplate ...]: A Python package for linear 
    regression.

pypi_username [MyUsername]: version [0.1.0]:
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
...
use_pytest [n]: y
use_pypi_deployment_with_travis [y]: n
add_pyup_badge [n]: n
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
...
Select command_line_interface:
1 - Click
2 - Argparse
3 - No command-line interface
Choose from 1, 2, 3 [1]: 3

create_author_file [y]: y
การพัฒนา Python Packages

การใช้ cookiecutter

cookiecutter https://github.com/audreyr/cookiecutter-pypackage
...
Select open_source_license:
1 - MIT license
2 - BSD license
3 - ISC license
4 - Apache Software License 2.0
5 - GNU General Public License v3
6 - Not open source
Choose from 1, 2, 3, 4, 5, 6 [1]: 6
การพัฒนา Python Packages

ผลลัพธ์จากเทมเพลต

mysklearn/
|-- mysklearn/
|   |-- __init__.py
|   `-- mysklearn.py
|-- tests/
|   |-- __init__.py
|   `-- test_mysklearn.py
|-- MANIFEST.in
|-- README.rst
|-- requirements_dev.txt
|-- setup.cfg
|-- setup.py
|-- tox.ini

|-- AUTHORS.rst |-- CONTRIBUTING.rst |-- HISTORY.rst `-- Makefile

ภายในไฟล์ AUTHORS.rst

=======
Credits
=======

Development Lead
________________

* James Fulton <[email protected]>

Contributors
____________

None yet. Why not be the first?
การพัฒนา Python Packages

ผลลัพธ์จากเทมเพลต

mysklearn/
|-- mysklearn/
|-- tests/
|-- MANIFEST.in
|-- README.rst
|-- requirements_dev.txt
|-- setup.cfg
|-- setup.py
|-- tox.ini
...
...
|-- docs/
|-- .github/
|-- .editorconfig
|-- .gitignore
`-- .travis.yml
การพัฒนา Python Packages

มาฝึกกันเถอะ!

การพัฒนา Python Packages

Preparing Video For Download...