我想运行一个简单的'Hello world'应用程序。我每次运行它都会得到
'ImportError: No module named web'
我使用pip安装了web.py并多次使用easy_install。我尝试卸载它并再次安装。我尝试将其安装为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“print( 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课程。谢谢大家的帮助:))
答案 0 :(得分:1)
根据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
答案 1 :(得分:0)
否则,您可以尝试在命令提示符下使用python -m pip install lpthw.web
,这对我有用。