Scientific Python Library Development Guide¶
This guide is maintained by the scientific Python community for the benefit of fellow scientists and research software engineers.
Start at the basics. Do you have a pile of scientific Python scripts or Jupyter notebooks that are becoming unwieldy? Are changes to some parts of your code accidentally breaking other parts of your code? Do you want to more maintainable, reusable, and shareable form? Start at the tutorial.
Learn recommended tools and best practices. Topical guides provide task-based instruction on topics that scientists and research software engineers may encounter as their projects evolve and grow. This covers modern packaging (simple or compiled), style checking, testing, documentation, static typing, CI, and much more!
Learn to write better research code. A high-level document on principles provides advice based on the community’s collective experience building code that is easier for researchers to use successfully and easier to maintain over time.
Use our solutions for common tasks. A growing collection of patterns provides tested approaches for tasks and can be tricky to get exactly right, such as including data files with Python packages.
Related Resources¶
This guide does not cover the basics of Python itself or the scientific Python libraries; it focuses on making or maintaining a package. We recommend the Scientific Python Lectures if you want info.
This guide also does not cover version control, but it is essential to have a basic facility with git to use these tools successfully. We recommend the Software Carpentry lesson on Git.
Other similar resources that cover Python packaging include:
Python Packaging User Guide: The official guide. Doesn’t cover as many extra tools that can help you, like linters and CI.
Python Developer Tooling Handbook: Lots of explanation and reference.
pyOpenSci Python Package Guide: A community created guidebook.
Intersect training: Packaging: A tutorial introducing Python packaging.