title: Can't install Rodeo with pip on Ubuntu
body: <p>I can't install <a href="https://github.com/yhat/rodeo" rel="nofollow">Rodeo</a> with pip, on Ubuntu 14.04.2 LTS 64 bit (installed on a Virtual Box)</p>
  
  <p>For information I'm a Python and Ubuntu beginner and I installed pip by following this <a href="http://www.liquidweb.com/kb/how-to-install-pip-on-ubuntu-14-04-lts/" rel="nofollow">tutorial</a></p>
  
  <p><code>pip -V</code></p>
  
  <p><code>pip 6.1.1 from /usr/local/lib/python2.7/dist-packages (python 2.7)</code></p>
  
  <p><strong>Problem:</strong></p>
  
  <p>When I execute    <code>pip install -U rodeo</code> I have an error message. Here is the log:</p>
  
  <pre><code>Did not find libzmq via pkg-config:
  
  Package libzmq was not found in the pkg-config search path.
  
  Perhaps you should add the directory containing `libzmq.pc'
  
  to the PKG_CONFIG_PATH environment variable
  
  No package 'libzmq' found
  
  
  
  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -c build/temp.linux-x86_64-2.7/scratch/check_sys_un.c -o build/temp.linux-x86_64-2.7/scratch/check_sys_un.o
  
  x86_64-linux-gnu-gcc -pthread build/temp.linux-x86_64-2.7/scratch/check_sys_un.o -o build/temp.linux-x86_64-2.7/scratch/check_sys_un
  
  Configure: Autodetecting ZMQ settings...
  
      Custom ZMQ dir:
  
  ************************************************
  
  creating build/temp.linux-x86_64-2.7/scratch/tmp
  
  cc -c /tmp/timer_createSSuyTd.c -o build/temp.linux-x86_64-2.7/scratch/tmp/timer_createSSuyTd.o
  
  cc build/temp.linux-x86_64-2.7/scratch/tmp/timer_createSSuyTd.o -o build/temp.linux-x86_64-2.7/scratch/a.out
  
  build/temp.linux-x86_64-2.7/scratch/tmp/timer_createSSuyTd.o: In function `main':
  
  timer_createSSuyTd.c:(.text+0x15): undefined reference to `timer_create'
  
  collect2: error: ld returned 1 exit status
  
  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Izmq/utils -Izmq/backend/cython -Izmq/devices -c build/temp.linux-x86_64-2.7/scratch/vers.c -o build/temp.linux-x86_64-2.7/scratch/vers.o
  
  build/temp.linux-x86_64-2.7/scratch/vers.c:4:17: fatal error: zmq.h: No such file or directory
  
   #include "zmq.h"
  
                   ^
  
  compilation terminated.
  
  
  
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
  
  
  Failed with default libzmq, trying again with /usr/local
  
  Configure: Autodetecting ZMQ settings...
  
      Custom ZMQ dir:       /usr/local
  
  ************************************************
  
  cc -c /tmp/timer_createcU4dvG.c -o build/temp.linux-x86_64-2.7/scratch/tmp/timer_createcU4dvG.o
  
  Assembler messages:
  
  Fatal error: can't create build/temp.linux-x86_64-2.7/scratch/tmp/timer_createcU4dvG.o: No such file or directory
  
  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -Izmq/utils -Izmq/backend/cython -Izmq/devices -c build/temp.linux-x86_64-2.7/scratch/vers.c -o build/temp.linux-x86_64-2.7/scratch/vers.o
  
  build/temp.linux-x86_64-2.7/scratch/vers.c:4:17: fatal error: zmq.h: No such file or directory
  
   #include "zmq.h"
  
                   ^
  
  compilation terminated.
  
  
  
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
  
  
  Warning: Failed to build or run libzmq detection test.
  
  
  
  If you expected pyzmq to link against an installed libzmq, please check to make sure:
  
  
  
      * You have a C compiler installed
  
      * A development version of Python is installed (including headers)
  
      * A development version of ZMQ &gt;= 2.1.4 is installed (including headers)
  
      * If ZMQ is not in a default location, supply the argument --zmq=&lt;path&gt;
  
      * If you did recently install ZMQ to a default location,
  
        try rebuilding the ld cache with `sudo ldconfig`
  
        or specify zmq's location with `--zmq=/usr/local`
  
  
  
  You can skip all this detection/waiting nonsense if you know
  
  you want pyzmq to bundle libzmq as an extension by passing:
  
  
  
      `--zmq=bundled`
  
  
  
  I will now try to build libzmq as a Python extension
  
  unless you interrupt me (^C) in the next 10 seconds...
  
  
  
  ************************************************
  
   1...
  
  Using bundled libzmq
  
  already have bundled/zeromq
  
  attempting ./configure to generate platform.hpp
  
  Warning: failed to configure libzmq:
  
  /bin/sh: 1: ./configure: not found
  
  
  
  staging platform.hpp from: buildutils/include_linux
  
  checking for timer_create
  
  ************************************************
  
  ************************************************
  
  creating build/temp.linux-x86_64-2.7/tmp
  
  cc -c /tmp/timer_createmVaK_l.c -o build/temp.linux-x86_64-2.7/tmp/timer_createmVaK_l.o
  
  cc build/temp.linux-x86_64-2.7/tmp/timer_createmVaK_l.o -o build/temp.linux-x86_64-2.7/a.out
  
  build/temp.linux-x86_64-2.7/tmp/timer_createmVaK_l.o: In function `main':
  
  timer_createmVaK_l.c:(.text+0x15): undefined reference to `timer_create'
  
  collect2: error: ld returned 1 exit status
  
  no timer_create, linking librt
  
  Using bundled libsodium
  
  already have bundled/libsodium
  
  staging buildutils/include_sodium/version.h to bundled/libsodium/src/libsodium/include/sodium/version.h
  
  already have crypto_scalarmult_curve25519.h
  
  already have crypto_stream_salsa20.h
  
  ************************************************
  
  ************************************************
  
  building 'zmq.libsodium' extension
  
  creating build/temp.linux-x86_64-2.7/buildutils
  
  creating build/temp.linux-x86_64-2.7/bundled
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/32
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/32/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/16
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/16/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/64
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_verify/64/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_sign
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_sign/ed25519
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_sign/ed25519/ref10
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_sign/edwards25519sha512batch/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/hsalsa20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/hsalsa20/ref2
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa2012
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa2012/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa208
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa208/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_core/salsa20/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/sodium
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_aead
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_aead/chacha20poly1305
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_scalarmult
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_scalarmult/curve25519
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_scalarmult/curve25519/ref10
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha512
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha512/cp
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha512256
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha512256/cp
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha256
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_auth/hmacsha256/cp
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/randombytes
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/randombytes/sysrandom
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/randombytes/salsa20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_pwhash
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/sse
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_pwhash/scryptsalsa208sha256/nosse
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_generichash
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_generichash/blake2
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_generichash/blake2/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_hash
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_hash/sha512
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_hash/sha512/cp
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_hash/sha256
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_hash/sha256/cp
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_onetimeauth
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_onetimeauth/poly1305
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_box
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_box/curve25519xsalsa20poly1305/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/xsalsa20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/xsalsa20/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa2012
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa2012/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/aes128ctr
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/aes128ctr/portable
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/chacha20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/chacha20/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa208
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa208/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa20
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_stream/salsa20/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_shorthash
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_shorthash/siphash24
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_shorthash/siphash24/ref
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_secretbox
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305
  
  creating build/temp.linux-x86_64-2.7/bundled/libsodium/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref
  
  x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DNATIVE_LITTLE_ENDIAN=1 -Ibundled/libsodium/src/libsodium/include -Ibundled/libsodium/src/libsodium/include/sodium -I/usr/include/python2.7 -c buildutils/initlibsodium.c -o build/temp.linux-x86_64-2.7/buildutils/initlibsodium.o
  
  buildutils/initlibsodium.c:10:20: fatal error: Python.h: No such file or directory
  
   #include "Python.h"
  
                      ^
  
  compilation terminated.
  
  error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
  
  ----------------------------------------
  Cleaning up...
  Command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip_build_ricol/pyzmq/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-KXbrbW-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_ricol/pyzmq
  Storing debug log for failure in /home/ricol/.pip/pip.log
  </code></pre>
  
  <p><strong>Edit:</strong> I followed  eandersson's answer:</p>
  
  <pre><code>sudo apt-get install python-dev
  sudo apt-get install libzmq-dev
  sudo pip install -U rodeo
  sudo pip install slugify
  </code></pre>
  
  <p>But there is still a problem  when I execute <code>rodeo .</code> even after rebooting :</p>
  
  <pre><code>ricol@ricol-VirtualBox:~$ rodeo .
  
   _______      ___   ______   ________    ___    
  |_   __ \   .'   `.|_   _ `.|_   __  | .'   `.  
    | |__) | /  .-.  \ | | `. \ | |_ \_|/  .-.  \ 
    |  __ /  | |   | | | |  | | |  _| _ | |   | | 
   _| |  \ \_\  `-'  /_| |_.' /_| |__/ |\  `-'  / 
  |____| |___|`.___.'|______.'|________| `.___.'  
  
  
  
     ''''''''''''''''''''''''''''''''''''''''''''''''''
        URL: http://localhost:5000/
        DIRECTORY: /home/ricol
      ''''''''''''''''''''''''''''''''''''''''''''''''''
  (process:2429): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  get_contentWindow@chrome://global/content/bindings/browser.xml:412:54
  get_securityUI@chrome://global/content/bindings/browser.xml:662:17
  browser_XBL_Constructor@chrome://global/content/bindings/browser.xml:786:17
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  [ERROR]: Exception on / [GET]
  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
      response = self.full_dispatch_request()
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
      rv = self.handle_user_exception(e)
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
      reraise(exc_type, exc_value, tb)
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
      rv = self.dispatch_request()
    File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request
      return self.view_functions[rule.endpoint](**req.view_args)
    File "/usr/local/lib/python2.7/dist-packages/rodeo/rodeo.py", line 33, in home
      dirslug = slugify.slugify(dirname)
    File "/usr/local/lib/python2.7/dist-packages/slugify.py", line 26, in slugify
      unicodedata.normalize('NFKD', string)
  TypeError: must be unicode, not str
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  @chrome://browser/content/content.js:37:5
  addTab@chrome://browser/content/tabbrowser.xml:1642:13
  ssi_restoreWindow@resource:///modules/sessionstore/SessionStore.jsm:2292:1
  ssi_onLoad@resource:///modules/sessionstore/SessionStore.jsm:782:11
  SessionStoreInternal.onBeforeBrowserWindowShown/&lt;@resource:///modules/sessionstore/SessionStore.jsm:948:9
  Handler.prototype.process@resource://gre/modules/Promise.jsm -&gt; resource://gre/modules/Promise-backend.js:865:23
  this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -&gt; resource://gre/modules/Promise-backend.js:744:7
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
  pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
  pbs&lt;@resource://unity/observer.js:38:71
  Observer.prototype.observe@resource://unity/observer.js:77:24
  </code></pre>