Hello Alex, thank for reporting this problem. Is it only occurring with web2py 2.25.1?
On Monday, 23 October 2023 at 14:05:15 UTC-7 alex wrote: > Hi, > > I am running web2py Version 2.25.1-stable in virtualenv (python 3.9.5, it > happens also in python 3.10.10) > > After activating the virtualenv, I installed requests > > $ pip install request > $ pip show requests > Name: requests > Version: 2.31.0 > Summary: Python HTTP for Humans. > Home-page: https://requests.readthedocs.io > Author: Kenneth Reitz > Author-email: m...@kennethreitz.org > License: Apache 2.0 > Location: > /Users/z/dev/web2py/.direnv/python-3.9/lib/python3.9/site-packages > Requires: certifi, charset-normalizer, idna, urllib3 > Required-by: > > Importing requests from bpython gives no errors. > > Importing requests in myapp gives an error. > I also tried with other external libraries, some of them do work, some > others cannot be imported. > > About this case, I have tried the following: > > In "web2py/applications/myapp/models/0.py": > > # - - - - - - - - - - - - - - - > > # added the virtualenv path to sys.path > > site_package_path = > "/Users/z/dev/web2py/.direnv/python-3.9/lib/python3.9/site-packages" > > if site_package_path not in sys.path: > sys.path.append(site_package_path) > > try: > import requests > except: > raise Exception('import error: "requests" not found') > > > # - - - - - - - - - - - - - - - > > I am running web2py with: > > $python web2py.py -a 'pwd' > > Error log: > > # - - - - - - - - - - - - - - - > Ticket ID > 127.0.0.1.2023-10-24.05-48-51.a557dcfb-55a3-4063-ac27-879cad8fe799 > > <class 'Exception'> import error: "requests" not found > Version > web2py™ Version 2.25.1-stable+timestamp.2023.10.08.18.44.43 > Python Python 3.9.5: /Users/z/dev/web2py/.direnv/python-3.9/bin/python > (prefix: /Users/z/dev/web2py/.direnv/python-3.9) > > ... > > Traceback (most recent call last): > File "/Users/z/dev/web2py/gluon/custom_import.py", line 78, in > custom_importer > result = sys.modules[modules_prefix] > KeyError: 'applications.wh.modules.requests' > > During handling of the above exception, another exception occurred: > > Traceback (most recent call last): > File "/Users/z/dev/web2py/applications/wh/models/0.py", line 29, in > <module> > import requests > File "/Users/z/dev/web2py/gluon/custom_import.py", line 80, in > custom_importer > raise ImportError("No module named %s" % modules_prefix) > ImportError: No module named applications.wh.modules.requests > > During handling of the above exception, another exception occurred: > > Traceback (most recent call last): > File "/Users/z/dev/web2py/gluon/restricted.py", line 219, in restricted > exec(ccode, environment) > File "/Users/z/dev/web2py/applications/wh/models/0.py", line 31, in > <module> > raise Exception('import error: "requests" not found') > Exception: import error: "requests" not found > Error snapshot help > Exception(import error: "requests" not found) > > inspect attributes > > Exception instance attributes > __cause__ None > __class__ <class 'Exception'> > __context__ ImportError('No module named > applications.wh.modules.requests') > __delattr__ <method-wrapper '__delattr__' of Exception object> > __dict__ {} > __dir__ <built-in method __dir__ of Exception object> > __doc__ 'Common base class for all non-exit exceptions.' > __eq__ <method-wrapper '__eq__' of Exception object> > __format__ <built-in method __format__ of Exception object> > __ge__ <method-wrapper '__ge__' of Exception object> > __getattribute__ <method-wrapper '__getattribute__' of Exception object> > __gt__ <method-wrapper '__gt__' of Exception object> > __hash__ <method-wrapper '__hash__' of Exception object> > __init__ <method-wrapper '__init__' of Exception object> > __init_subclass__ <built-in method __init_subclass__ of type object> > __le__ <method-wrapper '__le__' of Exception object> > __lt__ <method-wrapper '__lt__' of Exception object> > __ne__ <method-wrapper '__ne__' of Exception object> > __new__ <built-in method __new__ of type object> > __reduce__ <built-in method __reduce__ of Exception object> > __reduce_ex__ <built-in method __reduce_ex__ of Exception object> > __repr__ <method-wrapper '__repr__' of Exception object> > __setattr__ <method-wrapper '__setattr__' of Exception object> > __setstate__ <built-in method __setstate__ of Exception object> > __sizeof__ <built-in method __sizeof__ of Exception object> > __str__ <method-wrapper '__str__' of Exception object> > __subclasshook__ <built-in method __subclasshook__ of type object> > __suppress_context__ False > __traceback__ <traceback object> > args ('import error: "requests" not found',) > with_traceback <built-in method with_traceback of Exception object> > Frames > File /Users/z/dev/web2py/gluon/restricted.py in restricted at line 219 > code arguments variables > > File /Users/z/dev/web2py/applications/wh/models/0.py in <module> at line > 31 code arguments variables > > Function argument list > () > > Context locals > > ... > > > <function embed64> > iteritems : > <function <lambda>> > local_import : > <function build_environment.<locals>.<lambda>> > myconf : > {'app': {'name': 'WH', 'author': 'Your Name <you...ormstyle': > 'bootstrap3_inline', 'separator': ''}} > redirect : > <function redirect> > reduce : > <built-in function reduce> > request : > <Storage {'env': <Storage {'SERVER_SOFTWARE': 'R...050b77f0>, > '_custom_import_track_changes': True}> > response : > <Storage {'status': 200, 'headers': {'X-Powered-...ndex/\\w+\\.py$'], > 'view': 'default/index.html'}> > session : > <Storage {}> > site_package_path : > "'/Users/z/dev/web2py/.direnv/python-3.9/lib/python3.9/site-packages'" > sys : > <module 'sys' (built-in)> > to_bytes : > <function to_bytes> > to_native : > <function to_native> > track_changes : > <function track_changes> > xmlescape : > <function xmlescape> > xrange : > <class 'range'> > session > response > body : > <_io.StringIO object at 0x10509de50> > cookies : > session_id_wh : > 127.0.0.1-3599de20-98fe-4a6f-a572-aa7d12f28231 > comment : > domain : > expires : > httponly : > max-age : > path : > / > samesite : > secure : > version : > delimiters : > {{ > }} > files : > flash : > form_label_separator : > : > formstyle : > table3cols > generic_patterns : > * > headers : > X-Powered-By : > web2py > menu : > meta : > models_to_run : > ^\w+\.py$ > ^default/\w+\.py$ > ^default/index/\w+\.py$ > postprocessing : > session_client : > 127.0.0.1 > session_cookie_compression_level : > None > session_cookie_expires : > None > session_data_name : > session_data_wh > session_file : > None > session_filename : > > /Users/z/dev/web2py/applications/wh/sessions/127.0.0.1-3599de20-98fe-4a6f-a572-aa7d12f28231 > session_hash : > af8c96c5e9a768088deb3555c108286d > session_id : > 127.0.0.1-3599de20-98fe-4a6f-a572-aa7d12f28231 > session_id_name : > session_id_wh > session_masterapp : > wh > session_new : > True > session_storage_type : > file > status : > 200 > view : > default/index.html > In file: /Users/z/dev/web2py/applications/wh/models/0.py > 1. > <code object <module> at 0x103f03a80, file > "/Users/z/dev/web2py/applications/wh/models/0.py", line 1> > > # - - - - - - - - - - - - - - - > > Any hints? > > Thank you > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/3c31a0f0-64f8-47d0-b2a5-d11b84b25a5en%40googlegroups.com.