I was upgrading my disk to SSD the other day, and to make sure all my data fit, I've done some
cleaning up, among others I've run brew cleanup
which deletes old formulae. But apparently
somewhere along the way that has broken my Python install. Trying to run Flask server would produce
a cryptic error:
ImportError: No module named itsdangerous
Hmm okay, lets try to install it:
% pip3 install itsdangerous
Downloading/unpacking itsdangerous
Downloading itsdangerous-0.23.tar.gz (46kB): 46kB downloaded
[1] 48739 segmentation fault pip3 install itsdangerous
Mmmkaay, what? I've tried to reinstall python to no avail, the search did not show anything either... The segfault looked like this:
Process: Python [61249]
Path: /usr/local/Cellar/python3/3.3.4/Frameworks/Python.framework/Versions/3.3/Resources/Python.app/Contents/MacOS/Python
Identifier: Python
Version: 3.3.4 (3.3.4)
Code Type: X86-64 (Native)
Parent Process: sudo [61248]
Responsible: Terminal [416]
User ID: 0
Date/Time: 2014-02-21 12:35:15.725 +0100
OS Version: Mac OS X 10.9.1 (13B42)
Report Version: 11
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000011
VM Regions Near 0x11:
-->
__TEXT 00000001084d7000-00000001084d9000 [ 8K] r-x/rwx SM=COW /usr/local/Cellar/python3/3.3.4/Frameworks/Python.framework/Versions/3.3/Resources/Python.app/Contents/MacOS/Python
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libcrypto.1.0.0.dylib 0x0000000108f6d1ac EVP_PKEY_CTX_dup + 28
1 libcrypto.1.0.0.dylib 0x0000000108f61565 EVP_MD_CTX_copy_ex + 325
2 _hashlib.so 0x0000000108e88933 locked_EVP_MD_CTX_copy + 78
3 _hashlib.so 0x0000000108e887f0 EVP_hexdigest + 51
4 org.python.python 0x0000000108570bd2 PyEval_EvalFrameEx + 16052
5 org.python.python 0x000000010857512d fast_function + 186
6 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
7 org.python.python 0x000000010857512d fast_function + 186
8 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
9 org.python.python 0x000000010857512d fast_function + 186
10 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
11 org.python.python 0x000000010857512d fast_function + 186
12 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
13 org.python.python 0x000000010857512d fast_function + 186
14 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
15 org.python.python 0x000000010857512d fast_function + 186
16 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
17 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
18 org.python.python 0x00000001085751a2 fast_function + 303
19 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
20 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
21 org.python.python 0x00000001085751a2 fast_function + 303
22 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
23 org.python.python 0x000000010857512d fast_function + 186
24 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
25 org.python.python 0x000000010857512d fast_function + 186
26 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
27 org.python.python 0x000000010857512d fast_function + 186
28 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
29 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
30 org.python.python 0x0000000108506099 function_call + 345
31 org.python.python 0x00000001084ea67a PyObject_Call + 111
32 org.python.python 0x0000000108571486 PyEval_EvalFrameEx + 18280
33 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
34 org.python.python 0x00000001085751a2 fast_function + 303
35 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
36 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
37 org.python.python 0x00000001085751a2 fast_function + 303
38 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
39 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
40 org.python.python 0x00000001085751a2 fast_function + 303
41 org.python.python 0x0000000108570c92 PyEval_EvalFrameEx + 16244
42 org.python.python 0x000000010856cb93 PyEval_EvalCodeEx + 1579
43 org.python.python 0x000000010856c562 PyEval_EvalCode + 63
44 org.python.python 0x000000010858d6cf run_mod + 58
45 org.python.python 0x000000010858d8e4 PyRun_FileExFlags + 142
46 org.python.python 0x000000010858d1b9 PyRun_SimpleFileExFlags + 875
47 org.python.python 0x000000010859eaab Py_Main + 3123
48 org.python.python 0x00000001084d8e3f 0x1084d7000 + 7743
49 libdyld.dylib 0x00007fff91ea55fd start + 1
Thread 1:
0 libsystem_kernel.dylib 0x00007fff98b49e6a __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff8d74af08 _pthread_wqthread + 330
2 libsystem_pthread.dylib 0x00007fff8d74dfb9 start_wqthread + 13
Thread 2:: Dispatch queue: com.apple.libdispatch-manager
0 libsystem_kernel.dylib 0x00007fff98b4a662 kevent64 + 10
1 libdispatch.dylib 0x00007fff9363143d _dispatch_mgr_invoke + 239
2 libdispatch.dylib 0x00007fff93631152 _dispatch_mgr_thread + 52
Thread 3:
0 libsystem_kernel.dylib 0x00007fff98b49e6a __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x00007fff8d74af08 _pthread_wqthread + 330
2 libsystem_pthread.dylib 0x00007fff8d74dfb9 start_wqthread + 13
Thread 0 crashed with X86 Thread State (64-bit):
rax: 0x0000000000000001 rbx: 0x00007fff57726b00 rcx: 0x0000000000000010 rdx: 0xffffffffffffffd4
rdi: 0x00007fe6ca7bde20 rsi: 0x00007fe6ca60d490 rbp: 0x00007fff57726a90 rsp: 0x00007fff57726a70
r8: 0x0000000000000006 r9: 0x00007fe6ca400000 r10: 0x0000000069793538 r11: 0xffffffffffe9b3a0
r12: 0x00007fff7c009400 r13: 0x00000001092c0f38 r14: 0x00007fe6ca7bde20 r15: 0x0000000000000000
rip: 0x0000000108f6d1ac rfl: 0x0000000000010202 cr2: 0x0000000000000011
So libcrypto.dylib is at fault here... Lets see, Homebrew has an option to use Python with brewed OpenSSL instead:
% brew info python3
python3: stable 3.3.4, HEAD
http://www.python.org/
Not installed
From: https://github.com/Homebrew/homebrew/commits/master/Library/Formula/python3.rb
==> Dependencies
Build: pkg-config ✔
Recommended: readline ✔, sqlite ✔, gdbm ✔, xz ✔
==> Options
--quicktest
Run `make quicktest` after the build
--universal
Build a universal binary
--with-brewed-openssl
Use Homebrew's openSSL instead of the one from OS X
--with-brewed-tk
Use Homebrew's Tk (has optional Cocoa and threads support)
--without-gdbm
Build without gdbm support
--without-readline
Build without readline support
--without-sqlite
Build without sqlite support
--without-xz
Build without xz support
--HEAD
install HEAD version
==> Caveats
Setuptools and Pip have been installed. To update them
pip3 install --upgrade setuptools
pip3 install --upgrade pip
You can install Python packages with
`pip3 install <your_favorite_package>`
They will install into the site-package directory
/usr/local/lib/python3.3/site-packages
See: https://github.com/Homebrew/homebrew/wiki/Homebrew-and-Python
So I ran:
% brew uninstall python3
% brew install python3 --with-brewed-openssl
And that seemed to do the trick for the pip segfaults, however it did not solve my original problem. To do that I've uninstalled all of the Flask and related packages using pip3 and then re-installed them in the virtual environment instead.