Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ddelange/6e04e81b99fae08e817a00515d4a378d to your computer and use it in GitHub Desktop.
Save ddelange/6e04e81b99fae08e817a00515d4a378d to your computer and use it in GitHub Desktop.
Installation instructions for libicu-dev, PyICU, libpostal, pypostal on Mac OS X

Installing PyICU, libpostal, pypostal on Mac OS X 10.14+

libicu-dev (PyICU dependency)

brew reinstall pkg-config icu4c

PyICU (pypostal dependency)

# this is the recent homebrew opt path: double check these folders exist
ls /opt/homebrew/opt/icu4c/bin
ls /opt/homebrew/opt/icu4c/sbin
# add to PATH and PKG_CONFIG_PATH
export PATH="/opt/homebrew/opt/icu4c/bin:/opt/homebrew/opt/icu4c/sbin:${PATH}"
export PKG_CONFIG_PATH="/opt/homebrew/opt/icu4c/lib/pkgconfig:${PKG_CONFIG_PATH}"

# ensure system clang is used for proper libstdc++ https://github.com/ovalhub/pyicu/issues/5#issuecomment-291631507
unset CC CXX

pip install --no-cached-dir --force-reinstall --no-binary=pyicu pyicu  # avoid wheels from previous runs or PyPI

libpostal (pypostal dependency)

One-liner (using HEAD as v1.1 was released in 2018):

brew install --HEAD robsalasco/libpostal/libpostal
# this is the recent homebrew opt path: double check these folders exist
ls /opt/homebrew/opt/libpostal/lib
ls /opt/homebrew/opt/libpostal/include
# add to LDFLAGS and CPPFLAGS
export LDFLAGS="-L/opt/homebrew/opt/libpostal/lib ${LDFLAGS}"
export CPPFLAGS="-I/opt/homebrew/opt/libpostal/include ${CPPFLAGS}"

pip install --no-cache-dir --force-reinstall postal

# test installation by parsing an example address
python -c "from postal.parser import parse_address; my_address = '123 Beech Lake Ct. Roswell, GA 30076'; print({v: k for k, v in dict(parse_address(my_address)).items()})"
# {'house_number': '123', 'road': 'beech lake ct.', 'city': 'roswell', 'state': 'ga', 'postcode': '30076'}
@ddelange
Copy link
Author

Awesome, thanks for reporting back!

@lovejodh
Copy link

Thank you SO much for responding @ddelange. I still can't get the postal scrubbing to work in scrubadub.py, but that's a problem for another day. It's not because it can't find libpostal, at least. The likelihood of there being postal data in this repository is nil, so I'm going to leave it for now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment