---
# System prepended metadata

title: Notes for Scientific Python Packaging

---

Notes for Scientific Python Packaging
=====================================

- Please add constructive, factual information below. For example, *doing x, results in y.*
- Please avoid adding opinions during this edit round.
- The goal in this round of edits is to surface information and consolidate in one place.

Installation
------------

- Using `python -m pip` in place of `pip` avoids confusion when `python` and `pip` point to executables that are in different environments.
- Using `pip install [-e] .` instead of `python setup.py [develop|install]` enables pip to observe what `setup.py` is doing to the environment.
- [name=@carreau] It is symetric with installing other packages, for teaching you only need to rememeber that `.` is "this directory", which you might already know. 
- [name=@carreau] 
Using `pip install .` will be future proof for non-`setup.py` based project.
- Add your points to the list

Packaging
---------

- Using `python setup.py sdist bdist_wheel` is the documented recommendation.
  - @pradyunsg: probably not. We should start recommending the use of pep517 here, since we’re trying to move away from direct setup.py invocation.
- Using `python -m pep517.build -s -b` is an alternative. [What are the advantages?]
  - The main advantage would be, utilization of newer standards that allow tooling to work better with each other.
  - @pradyunsg: pip ~will~ might grow a pip build command. I don’t know if we’d want to mention that here, just yet.
- Add your points to the list



