python - 尽管已安装,但我得到 'ImportError: No module named web'

标签 python web module importerror web.py

我想运行一个简单的“Hello world”应用程序。每次我运行它我都会得到

'ImportError: No module named web'

我多次使用 pip 和 easy_install 安装了 web.py。我尝试卸载它并重新安装。我尝试将它安装为 sudo。似乎没有任何效果。我使用 OS X

应用程序代码:

import web

urls = (
  '/', 'index'
)

app = web.application(urls, globals())

class index:
    def GET(self):
        greeting = "Hello World"
        return greeting

if __name__ == "__main__":
    app.run()

我尝试使用这个命令来运行这个应用程序:

python /Users/mptorz/webversion/bin/app.py http://0.0.0.0:8080/

不过我知道这不是代码的问题,因为我基本上是在做这门课http://learnpythonthehardway.org/book/ex50.html .

我认为这可能很有趣。我刚刚再次尝试重新安装 web.py,但出现此错误:

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' 

我尝试用 sudo 做同样的事情,但我得到了这个错误。

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.

然后我尝试这样做:

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

当我运行该应用程序时,我仍然收到相同的错误“ImportError:没有名为 web 的模块”。

我被要求添加 python -c "p​​rint(import('sys').path)"的结果:

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']

Somone 还建议尝试“python -m pip install web.py” 它导致了这个错误:

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 -> build/lib/web
    copying web/application.py -> build/lib/web
    copying web/browser.py -> build/lib/web
    copying web/db.py -> build/lib/web
    copying web/debugerror.py -> build/lib/web
    copying web/form.py -> build/lib/web
    copying web/http.py -> build/lib/web
    copying web/httpserver.py -> build/lib/web
    copying web/net.py -> build/lib/web
    copying web/python23.py -> build/lib/web
    copying web/session.py -> build/lib/web
    copying web/template.py -> build/lib/web
    copying web/test.py -> build/lib/web
    copying web/utils.py -> build/lib/web
    copying web/webapi.py -> build/lib/web
    copying web/webopenid.py -> build/lib/web
    copying web/wsgi.py -> build/lib/web
    creating build/lib/web/wsgiserver
    copying web/wsgiserver/__init__.py -> build/lib/web/wsgiserver
    copying web/wsgiserver/ssl_builtin.py -> build/lib/web/wsgiserver
    copying web/wsgiserver/ssl_pyopenssl.py -> build/lib/web/wsgiserver
    creating build/lib/web/contrib
    copying web/contrib/__init__.py -> build/lib/web/contrib
    copying web/contrib/template.py -> 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/

在完成此处建议的所有操作后,我再次尝试运行该应用程序,结果如下:

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 <module>
    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/'

我刚刚尝试了@PhilipTzou 建议的自制解决方案。在我这样做之后,运行应用程序的输出是:

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 <module>
    import web
  File "/usr/local/lib/python2.7/site-packages/web/__init__.py", line 14, in <module>
    import utils, db, net, wsgi, http, webapi, httpserver, debugerror
  File "/usr/local/lib/python2.7/site-packages/web/wsgi.py", line 8, in <module>
    import http
  File "/usr/local/lib/python2.7/site-packages/web/http.py", line 16, in <module>
    import net, utils, webapi as web
  File "/usr/local/lib/python2.7/site-packages/web/webapi.py", line 31, in <module>
    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 <module>
    import mimetools
  File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/mimetools.py", line 6, in <module>
    import tempfile
  File "/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/lib/python2.7/tempfile.py", line 32, in <module>
    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 <module>
    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

解决方案 最后,它奏效了。运行@PhilipTzou 建议的解决方案并输入 python/Users/mptorz/webversion/bin/app.py 8080 app.py 终于可以工作了,我可以继续我的 python 类(class)了。谢谢大家的帮助:)

最佳答案

根据您的 sys.path 的输出,您可能使用 OSX Python 来运行您的脚本 (app.py) 但使用 Homebrew Python 来执行 PIP 命令.解决方案非常简单:

brew link --overwrite python

这将 change your default Python to Homebrew one .执行此命令后,您可以通过键入以下命令来验证您使用的是 Homebrew Python:

which -a python

结果应该是这样的(顺序很重要):

/usr/local/bin/python
/usr/bin/python

关于python - 尽管已安装,但我得到 'ImportError: No module named web',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39044472/

相关文章:

Python:如果变量是 'int' 并且长度 >= 5,则继续

web - 带 GUI 的多语言静态网站的最佳解决方案是什么?

css - 如何让每个Div都是占据整个Body高度的一个section?

recursion - OCaml 中的递归仿函数

Python 自定义模块名称未定义

python - 正则表达式:匹配 'name1: A=a name2:B=b name3:C=c d' 的表达式

python - web2py 重定向到上一页

python - 在数据帧的某个索引处用另一行替换一行并更改单元格值

javascript - 网站保存用户详细信息

reactjs - typescript 图像导入