Clone this wiki locally
Our git repository is at github: https://github.com/pyinstaller/pyinstaller
origin/masterto be the main branch where the source code of HEAD always reflects a production-ready state.
origin/developto be the main branch where the source code of HEAD always reflects a state with the latest delivered development changes for the next release. Some would call this the “integration branch”.
This is where any automatic nightly builds are built from.
More information to come here.
Guidelines for commits
Commit often and in logical chunks
A commit should be one (and just one) logical unit. It should be something that someone might want to patch or revert in its entirety, and never piecewise. If it could be useful in pieces, make separate commits.
Write meaningful commit messages.
Using atomic commits will result in short, clear, and concise commit messages. Non-atomic commits make for awful run-on commit messages.
Try to make small patches (i.e. work in consistent increments).
Separate changes that affect functionality from those that just affect code layout, indendation, whitespace, filenames etc. This means that when looking at patches later, we don't have to wade through loads of non-functional changes to get to the important parts of the patch.
Especially don't mix different types of change, and put a standard prefix for each type of change to identify it in your commit message.
Restrict all whitespace changes to a specific type and document as such.
Restrict refactorings (that should not change functionality) to their own commit (and document).
Restrict functionality changes (bug fix or new feature) to their own changelists (and document).
If possible, commit often. This helps to avoid conflicts.
Only push when your tree passes validation: see TestingPatches.
Discuss anything you think might be controversial before pushing it.
pyenv and PyInstaller
- clone pyenv repository
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
- clone virtualenv plugin
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
- add to
# Add 'pyenv' to PATH. export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" # Enable shims and autocompletion for pyenv. eval "$(pyenv init -)" # Load pyenv-virtualenv automatically by adding # # the following to ~/.zshrc: # eval "$(pyenv virtualenv-init -)"
- Install python version with shared libpython (necessary for PyInstaller to work)
$ env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.5.0
$ pyenv virtualenv 3.5.0 venvname
- activate virtualenv
$ pyenv activate venvname
- deactivate virtualenv
$ pyenv deactivate
Other Development Documentation
- PEP 273 -- Import Modules from Zip Archives
- PEP 302 -- New Import Hooks
- Porting to Python 3
- Example of New Import Hooks Usage
- Unofficial Windows Binaries for Python Extension Packages
- Hidden Features of Python
- Introduction to pip and virtualenv
- pythonz: a Python installation manager
- Python/C API Reference Manual
- Crossplatform filepath naming
- wchar_t on Win/Lin/Osx
- How to use VS C++ GetEnvironmentVariable
- What is LPCSTR, LPCTSTR and LPTSTR
- Shell Path Handling Functions win32
- Test macros like _POSIX_C_SOURCE, _GNU_SOURCE, _XOPEN_SOURCE
- Windows 7 Kernel Architecture Changes - api-ms-win-core files
- Activation Contexts
- Windows GCC (MinGW) binaries for Python developers - ease Python extension compilation with gcc on Windows.
- Creating temporary files on win32 part 1
- Creating temporary files on win32 part 2
- Unique temporary directory in c on Win
- Side-by-side assembly on wikipedia
- SXS Activation Context --- Activate and Deactivate
- When to Use the Activation Context API
- How to Use the Activation Context API
- Manifest Embedding and Activation
- Using Isolated Applications and Side-by-side Assemblies
Mac OS X
- Dynamic Libraries, RPATH, and Mac OS
- RPATH blog entry
- Building with shared libs
- Dynamic Library Usage Guidelines - Apple doc
- Linking on Darwin (OS X)
- Mac OS X linking, install names
- Mach-O File Format Reference
- visual Mach-O file browser - MachOView
- Some C++ Tips and Tricks for Mac OS X