title: I get 'ImportError: No module named web' despite the fact that it is installed
body: <p>I would like to run a simple 'Hello world' app. Every time I run it I get </p>
  
  <pre><code>'ImportError: No module named web'
  </code></pre>
  
  <p>I installed web.py using pip and using easy_install several times. I tried uninstalling it and installing again. I tried installing it a as sudo. Nothing seems to work. I use OS X </p>
  
  <p>Code of the application:</p>
  
  <pre><code>import web
  
  urls = (
    '/', 'index'
  )
  
  app = web.application(urls, globals())
  
  class index:
      def GET(self):
          greeting = "Hello World"
          return greeting
  
  if __name__ == "__main__":
      app.run()
  </code></pre>
  
  <p>I tried to run this app using this commend:</p>
  
  <pre><code>python /Users/mptorz/webversion/bin/app.py http://0.0.0.0:8080/
  </code></pre>
  
  <p>However I know that this is not an issue of the code, because I am basically doing this course <a href="http://learnpythonthehardway.org/book/ex50.html" rel="nofollow">http://learnpythonthehardway.org/book/ex50.html</a>.</p>
  
  <p>I thought it might be interesting. I have just tried again to reinstall web.py and I have got this error:</p>
  
  <pre><code>pc7:~ mptorz$ pip uninstall web.py
  Uninstalling web.py-0.40.dev0:
    /usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg
  Proceed (y/n)? y
  Exception:
  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/site-packages/pip/basecommand.py", line 215, in main
      status = self.run(options, args)
    File "/usr/local/lib/python2.7/site-packages/pip/commands/uninstall.py", line 76, in run
      requirement_set.uninstall(auto_confirm=options.yes)
    File "/usr/local/lib/python2.7/site-packages/pip/req/req_set.py", line 336, in uninstall
      req.uninstall(auto_confirm=auto_confirm)
    File "/usr/local/lib/python2.7/site-packages/pip/req/req_install.py", line 742, in uninstall
      paths_to_remove.remove(auto_confirm)
    File "/usr/local/lib/python2.7/site-packages/pip/req/req_uninstall.py", line 115, in remove
      renames(path, new_path)
    File "/usr/local/lib/python2.7/site-packages/pip/utils/__init__.py", line 267, in renames
      shutil.move(old, new)
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 300, in move
      rmtree(src)
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 247, in rmtree
      rmtree(fullname, ignore_errors, onerror)
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 252, in rmtree
      onerror(os.remove, fullname, sys.exc_info())
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 250, in rmtree
      os.remove(fullname)
  OSError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg/EGG-INFO/dependency_links.txt' 
  </code></pre>
  
  <p>I tried doing the same with sudo and I got this error.</p>
  
  <pre><code>pc7:~ mptorz$ sudo pip uninstall web.py
  Password:
  The directory '/Users/mptorz/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  Uninstalling web.py-0.40.dev0:
    /usr/local/lib/python2.7/site-packages/web.py-0.40.dev0-py2.7.egg
  Proceed (y/n)? y
    Successfully uninstalled web.py-0.40.dev0
  The directory '/Users/mptorz/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  </code></pre>
  
  <p>Then I tried to do this:</p>
  
  <pre><code>pc7:~ mptorz$ sudo pip install web.py
  The directory '/Users/mptorz/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  The directory '/Users/mptorz/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
  Collecting web.py
    Downloading web.py-0.38.tar.gz (91kB)
      100% |████████████████████████████████| 92kB 199kB/s 
  Installing collected packages: web.py
    Running setup.py install for web.py ... done
  Successfully installed web.py-0.38
  </code></pre>
  
  <p>When I run the app I still get the same error 'ImportError: No module named web'.</p>
  
  <p>I was asked to add the result of python -c "print(<strong>import</strong>('sys').path)":</p>
  
  <pre><code>pc7:~ mptorz$ python -c "print(__import__('sys').path)"
  ['', '/Library/Python/2.7/site-packages/pip-8.1.2-py2.7.egg', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC', '/Library/Python/2.7/site-packages']
  </code></pre>
  
  <p>Somone also suggested trying "python -m pip install web.py"
  It resulted in this error:</p>
  
  <pre><code>pc7:~ mptorz$  python -m pip install web.py
  Collecting web.py
    Downloading web.py-0.38.tar.gz (91kB)
      100% |████████████████████████████████| 92kB 215kB/s 
  Installing collected packages: web.py
    Running setup.py install for web.py ... error
      Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/w6/f08g43wn1zg6ny5b_lq414cr0000gn/T/pip-build-pn7SCD/web.py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/w6/f08g43wn1zg6ny5b_lq414cr0000gn/T/pip-tBblX5-record/install-record.txt --single-version-externally-managed --compile:
      running install
      running build
      running build_py
      creating build
      creating build/lib
      creating build/lib/web
      copying web/__init__.py -&gt; build/lib/web
      copying web/application.py -&gt; build/lib/web
      copying web/browser.py -&gt; build/lib/web
      copying web/db.py -&gt; build/lib/web
      copying web/debugerror.py -&gt; build/lib/web
      copying web/form.py -&gt; build/lib/web
      copying web/http.py -&gt; build/lib/web
      copying web/httpserver.py -&gt; build/lib/web
      copying web/net.py -&gt; build/lib/web
      copying web/python23.py -&gt; build/lib/web
      copying web/session.py -&gt; build/lib/web
      copying web/template.py -&gt; build/lib/web
      copying web/test.py -&gt; build/lib/web
      copying web/utils.py -&gt; build/lib/web
      copying web/webapi.py -&gt; build/lib/web
      copying web/webopenid.py -&gt; build/lib/web
      copying web/wsgi.py -&gt; build/lib/web
      creating build/lib/web/wsgiserver
      copying web/wsgiserver/__init__.py -&gt; build/lib/web/wsgiserver
      copying web/wsgiserver/ssl_builtin.py -&gt; build/lib/web/wsgiserver
      copying web/wsgiserver/ssl_pyopenssl.py -&gt; build/lib/web/wsgiserver
      creating build/lib/web/contrib
      copying web/contrib/__init__.py -&gt; build/lib/web/contrib
      copying web/contrib/template.py -&gt; build/lib/web/contrib
      running install_lib
      creating /Library/Python/2.7/site-packages/web
      error: could not create '/Library/Python/2.7/site-packages/web': Permission denied
  
      ----------------------------------------
  Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/private/var/folders/w6/f08g43wn1zg6ny5b_lq414cr0000gn/T/pip-build-pn7SCD/web.py/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /var/folders/w6/f08g43wn1zg6ny5b_lq414cr0000gn/T/pip-tBblX5-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /private/var/folders/w6/f08g43wn1zg6ny5b_lq414cr0000gn/T/pip-build-pn7SCD/web.py/
  </code></pre>
  
  <p>After doing everything I was advised here, I tried running the app again and I have got this:</p>
  
  <pre><code>pc7:~ mptorz$ python /Users/mptorz/webversion/bin/app.py http://0.0.0.0:8080/
  Traceback (most recent call last):
    File "/Users/mptorz/webversion/bin/app.py", line 15, in &lt;module&gt;
      app.run()
    File "/Library/Python/2.7/site-packages/web/application.py", line 313, in run
      return wsgi.runwsgi(self.wsgifunc(*middleware))
    File "/Library/Python/2.7/site-packages/web/wsgi.py", line 55, in runwsgi
      server_addr = validip(listget(sys.argv, 1, ''))
    File "/Library/Python/2.7/site-packages/web/net.py", line 125, in validip
      port = int(port)
  ValueError: invalid literal for int() with base 10: '//0.0.0.0:8080/'
  </code></pre>
  
  <p>I have just tried the home-brew solution suggested by @PhilipTzou. After I did that the output of running the app is:</p>
  
  <pre><code>pc7:~ mptorz$ python /Users/mptorz/webversion/bin/app.py http://0.0.0.0:8080/
  Traceback (most recent call last):
    File "/Users/mptorz/webversion/bin/app.py", line 1, in &lt;module&gt;
      import web
    File "/usr/local/lib/python2.7/site-packages/web/__init__.py", line 14, in &lt;module&gt;
      import utils, db, net, wsgi, http, webapi, httpserver, debugerror
    File "/usr/local/lib/python2.7/site-packages/web/wsgi.py", line 8, in &lt;module&gt;
      import http
    File "/usr/local/lib/python2.7/site-packages/web/http.py", line 16, in &lt;module&gt;
      import net, utils, webapi as web
    File "/usr/local/lib/python2.7/site-packages/web/webapi.py", line 31, in &lt;module&gt;
      import sys, cgi, Cookie, pprint, urlparse, urllib
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/cgi.py", line 50, in &lt;module&gt;
      import mimetools
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetools.py", line 6, in &lt;module&gt;
      import tempfile
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 32, in &lt;module&gt;
      import io as _io
    File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/io.py", line 51, in &lt;module&gt;
      import _io
  ImportError: dlopen(/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyCodecInfo_GetIncrementalDecoder
    Referenced from: /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
    Expected in: flat namespace
   in /usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload/_io.so
  </code></pre>
  
  <p>SOLUTION
  Finally, it worked. After running the solution suggested by @PhilipTzou and entering <code>python /Users/mptorz/webversion/bin/app.py 8080</code> app.py is finally working and I can continue my python course. Thank you all for your help :)</p>