https://github.com/cirosantilli/python-setup-cheat
Distutils, setuptools, distribute, etc. information and template.
https://github.com/cirosantilli/python-setup-cheat
Last synced: 5 months ago
JSON representation
Distutils, setuptools, distribute, etc. information and template.
- Host: GitHub
- URL: https://github.com/cirosantilli/python-setup-cheat
- Owner: cirosantilli
- License: mit
- Created: 2014-03-28T12:34:23.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2014-03-28T12:34:43.000Z (almost 12 years ago)
- Last Synced: 2025-07-01T16:11:28.590Z (6 months ago)
- Language: Python
- Homepage:
- Size: 121 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.txt
- License: license.md
Awesome Lists containing this project
README
TODO this is currently broken!
`distutils`, `setuptools`, `distribute` information and template.
This should be repository should be installable itself.
- add bin
- add modules
You *need* the files
- `MANIFEST.txt`
- `CHANGES.txt`
Or it won't work!
#Gemfile equivalent
To allow users who have downloaded the source to develop it, use a `requirements.txt` by selecting required output lines from:
pip freeze
And tell users to install with:
sudo pip install -r requirements.txt
#Which tool to use to distribute?
Python distribution is currently messy.
See:
-
-
Current best course of action for python only projects:
- use the non-stdlib `distribute` module to create packages.
Note that the `distribute` base module is called `setuptools` because `distribute` is a fork of `setuptools`.
- host the packages on pypi:
- end users can now use `pip` to install packages from PyPi very easily.
The best you can do with the stdlib is `distutils`, but this is worse than `distribute`.
#Distutils
The setup function will parse command line arguments which allow you to do tons of things from the command line.
##setup.cfg
You can set default options for the commands via the `setup.cfg` script
Example: `bdist_rpm` is a subcommand, that is you call it as:
python setup.py bdist_rpm
`release`, `packager` and `doc_files` are options:
python setup.py bdist_rpm --release r --packager p --doc_files a b c
python setup.py bdist_rpm --help
To set all the values add the following to `setup.cfg`:
[bdist_rpm]
release = 1
packager = Greg Ward
doc_files = CHANGES.txt
README.txt
USAGE.txt
doc/
examples/
##Install and uninstall
Basic install:
sudo python setup.py install
This:
- moves files to the correct install location
- overwrites any existing files updating them.
- creates a build dir in current dir which you should ignore in your gitignore
It puts everythin in the right place inside this build dir:
- python files are copyied
- C/C++ extension `.o` and `.so` are put in there
**however** there is no automatic way to uninstall!!....
You should use a package manger like `pip` for that TODO how:
The best you can currently do without a package manger is:
sudo python setup.py install --record record.txt
So that `record.txt` will contain the installed files, so to uninstall you can:
cat record.txt | xargs sudo rm -rf
Clearly a hack =)
##sdist
Create a source distribution: pack all the source code into a compressed file to give to someone else for them to build
python setup.py sdist
Not very useful since people should just use `git` or `hg`...
`MANIFST.in` files will also be included
##build_ext
Only build c/c++ [extensions](http://docs.python.org/2/extending/):
###inplace
This will place the compiled C/C++ outputs side by side with the python code in the repo, exactly where they need to be, without touching anything outside the repo:
python setup.py build_ext --inplace
Great for testing projects that contain C/C++ extensions without having to install every time before a test so that you can modify the python files directly.
#Distribute specific
##bdist
Built distribution:
- c/c++ extensions will be compiled
- could create distro specific distributions like `rpm`
##upload
Uploads to PyPi!
##develop
sudo python setup.py develop
Only installs executables in path, but keeps python modules in place so that you can edit them where they are for tests.
##test
TODO
##pkc_resource
Allows to get information about packages installed with distribute, and therefore if it was installed with pip this will work too.
Get package version:
import pkg_resources
pkg_resources.get_distribution("srtmerge").version
#egg
TODO what is