rdeepak2002
(Deepak Ramalingam)
September 7, 2024, 10:04pm
1
Hello, I followed the instructions on the 3.12 branch to build CPython for Emscripten (browser). I was able to successfully do so thanks to the amazing documentation and I also ran the REPL to ensure everything was working.
The next step for a personal project I’m working on was to get this CPython library to link with an existing C++ application, so that my application could run Python scripts within the browser.
I was able to get the compilation to work by linking the necessary libraries within CMake, but when running the application, I see the following errors after calling Py_InitializeEx(0)
:
...
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
...
ModuleNotFoundError: No module named 'encodings'
...
This is odd because in the Emscripten browser environment I have /usr/local/lib/python3.12/...
defined in the filesystem which contains all the python libraries (including encoding module folder). I also printed all files in the filesystem just to sanity check I wasn’t missing out anything.
I’ve tried searching this issue on numerous sites and looked at the docs extensively, but I’m pretty confused about why I keep getting this error.
I was curious if anyone knew the reason for this or had any examples on how to get around this issue for Emscripten browser? Thanks!
rdeepak2002
(Deepak Ramalingam)
September 7, 2024, 10:11pm
3
In case it helps, this is what my emscripten filesystem looks like:
%c tmp
(index):1 %c home
(index):1 %c web_user
(index):1 %c dev
(index):1 %c null
(index):1 %c tty
(index):1 %c tty1
(index):1 %c random
(index):1 %c urandom
(index):1 %c shm
(index):1 %c tmp
(index):1 %c stdin
(index):1 %c stdout
(index):1 %c stderr
(index):1 %c proc
(index):1 %c self
(index):1 %c fd
(index):1 %c usr
(index):1 %c local
(index):1 %c lib
(index):1 %c python3.12
(index):1 %c __phello__
(index):1 %c __init__.py
(index):1 %c spam.py
(index):1 %c asyncio
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c base_events.py
(index):1 %c base_futures.py
(index):1 %c base_subprocess.py
(index):1 %c base_tasks.py
(index):1 %c constants.py
(index):1 %c coroutines.py
(index):1 %c events.py
(index):1 %c exceptions.py
(index):1 %c format_helpers.py
(index):1 %c futures.py
(index):1 %c locks.py
(index):1 %c log.py
(index):1 %c mixins.py
(index):1 %c proactor_events.py
(index):1 %c protocols.py
(index):1 %c queues.py
(index):1 %c runners.py
(index):1 %c selector_events.py
(index):1 %c sslproto.py
(index):1 %c staggered.py
(index):1 %c streams.py
(index):1 %c subprocess.py
(index):1 %c taskgroups.py
(index):1 %c tasks.py
(index):1 %c threads.py
(index):1 %c timeouts.py
(index):1 %c transports.py
(index):1 %c trsock.py
(index):1 %c unix_events.py
(index):1 %c windows_events.py
(index):1 %c windows_utils.py
(index):1 %c collections
(index):1 %c __init__.py
(index):1 %c abc.py
(index):1 %c concurrent
(index):1 %c futures
(index):1 %c __init__.py
(index):1 %c _base.py
(index):1 %c process.py
(index):1 %c thread.py
(index):1 %c __init__.py
(index):1 %c ctypes
(index):1 %c macholib
(index):1 %c README.ctypes
(index):1 %c __init__.py
(index):1 %c dyld.py
(index):1 %c dylib.py
(index):1 %c fetch_macholib
(index):1 %c fetch_macholib.bat
(index):1 %c framework.py
(index):1 %c __init__.py
(index):1 %c _aix.py
(index):1 %c _endian.py
(index):1 %c util.py
(index):1 %c wintypes.py
(index):1 %c curses
(index):1 %c __init__.py
(index):1 %c ascii.py
(index):1 %c has_key.py
(index):1 %c panel.py
(index):1 %c textpad.py
(index):1 %c dbm
(index):1 %c __init__.py
(index):1 %c dumb.py
(index):1 %c gnu.py
(index):1 %c ndbm.py
(index):1 %c email
(index):1 %c mime
(index):1 %c __init__.py
(index):1 %c application.py
(index):1 %c audio.py
(index):1 %c base.py
(index):1 %c image.py
(index):1 %c message.py
(index):1 %c multipart.py
(index):1 %c nonmultipart.py
(index):1 %c text.py
(index):1 %c __init__.py
(index):1 %c _encoded_words.py
(index):1 %c _header_value_parser.py
(index):1 %c _parseaddr.py
(index):1 %c _policybase.py
(index):1 %c architecture.rst
(index):1 %c base64mime.py
(index):1 %c charset.py
(index):1 %c contentmanager.py
(index):1 %c encoders.py
(index):1 %c errors.py
(index):1 %c feedparser.py
(index):1 %c generator.py
(index):1 %c header.py
(index):1 %c headerregistry.py
(index):1 %c iterators.py
(index):1 %c message.py
(index):1 %c parser.py
(index):1 %c policy.py
(index):1 %c quoprimime.py
(index):1 %c utils.py
(index):1 %c encodings
(index):1 %c __init__.py
(index):1 %c aliases.py
(index):1 %c ascii.py
(index):1 %c base64_codec.py
(index):1 %c big5.py
(index):1 %c big5hkscs.py
(index):1 %c bz2_codec.py
(index):1 %c charmap.py
(index):1 %c cp037.py
(index):1 %c cp1006.py
(index):1 %c cp1026.py
(index):1 %c cp1125.py
(index):1 %c cp1140.py
(index):1 %c cp1250.py
(index):1 %c cp1251.py
(index):1 %c cp1252.py
(index):1 %c cp1253.py
(index):1 %c cp1254.py
(index):1 %c cp1255.py
(index):1 %c cp1256.py
(index):1 %c cp1257.py
(index):1 %c cp1258.py
(index):1 %c cp273.py
(index):1 %c cp424.py
(index):1 %c cp437.py
(index):1 %c cp500.py
(index):1 %c cp720.py
(index):1 %c cp737.py
(index):1 %c cp775.py
(index):1 %c cp850.py
(index):1 %c cp852.py
(index):1 %c cp855.py
(index):1 %c cp856.py
(index):1 %c cp857.py
(index):1 %c cp858.py
(index):1 %c cp860.py
(index):1 %c cp861.py
(index):1 %c cp862.py
(index):1 %c cp863.py
(index):1 %c cp864.py
(index):1 %c cp865.py
(index):1 %c cp866.py
(index):1 %c cp869.py
(index):1 %c cp874.py
(index):1 %c cp875.py
(index):1 %c cp932.py
(index):1 %c cp949.py
(index):1 %c cp950.py
(index):1 %c euc_jis_2004.py
(index):1 %c euc_jisx0213.py
(index):1 %c euc_jp.py
(index):1 %c euc_kr.py
(index):1 %c gb18030.py
(index):1 %c gb2312.py
(index):1 %c gbk.py
(index):1 %c hex_codec.py
(index):1 %c hp_roman8.py
(index):1 %c hz.py
(index):1 %c idna.py
(index):1 %c iso2022_jp.py
(index):1 %c iso2022_jp_1.py
(index):1 %c iso2022_jp_2.py
(index):1 %c iso2022_jp_2004.py
(index):1 %c iso2022_jp_3.py
(index):1 %c iso2022_jp_ext.py
(index):1 %c iso2022_kr.py
(index):1 %c iso8859_1.py
(index):1 %c iso8859_10.py
(index):1 %c iso8859_11.py
(index):1 %c iso8859_13.py
(index):1 %c iso8859_14.py
(index):1 %c iso8859_15.py
(index):1 %c iso8859_16.py
(index):1 %c iso8859_2.py
(index):1 %c iso8859_3.py
(index):1 %c iso8859_4.py
(index):1 %c iso8859_5.py
(index):1 %c iso8859_6.py
(index):1 %c iso8859_7.py
(index):1 %c iso8859_8.py
(index):1 %c iso8859_9.py
(index):1 %c johab.py
(index):1 %c koi8_r.py
(index):1 %c koi8_t.py
(index):1 %c koi8_u.py
(index):1 %c kz1048.py
(index):1 %c latin_1.py
(index):1 %c mac_arabic.py
(index):1 %c mac_croatian.py
(index):1 %c mac_cyrillic.py
(index):1 %c mac_farsi.py
(index):1 %c mac_greek.py
(index):1 %c mac_iceland.py
(index):1 %c mac_latin2.py
(index):1 %c mac_roman.py
(index):1 %c mac_romanian.py
(index):1 %c mac_turkish.py
(index):1 %c mbcs.py
(index):1 %c oem.py
(index):1 %c palmos.py
(index):1 %c ptcp154.py
(index):1 %c punycode.py
(index):1 %c quopri_codec.py
(index):1 %c raw_unicode_escape.py
(index):1 %c rot_13.py
(index):1 %c shift_jis.py
(index):1 %c shift_jis_2004.py
(index):1 %c shift_jisx0213.py
(index):1 %c tis_620.py
(index):1 %c undefined.py
(index):1 %c unicode_escape.py
(index):1 %c utf_16.py
(index):1 %c utf_16_be.py
(index):1 %c utf_16_le.py
(index):1 %c utf_32.py
(index):1 %c utf_32_be.py
(index):1 %c utf_32_le.py
(index):1 %c utf_7.py
(index):1 %c utf_8.py
(index):1 %c utf_8_sig.py
(index):1 %c uu_codec.py
(index):1 %c zlib_codec.py
(index):1 %c ensurepip
(index):1 %c _bundled
(index):1 %c pip-23.2.1-py3-none-any.whl
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c _uninstall.py
(index):1 %c html
(index):1 %c __init__.py
(index):1 %c entities.py
(index):1 %c parser.py
(index):1 %c http
(index):1 %c __init__.py
(index):1 %c client.py
(index):1 %c cookiejar.py
(index):1 %c cookies.py
(index):1 %c server.py
(index):1 %c idlelib
(index):1 %c Icons
(index):1 %c README.txt
(index):1 %c folder.gif
(index):1 %c idle.ico
(index):1 %c idle_16.gif
(index):1 %c idle_16.png
(index):1 %c idle_256.png
(index):1 %c idle_32.gif
(index):1 %c idle_32.png
(index):1 %c idle_48.gif
(index):1 %c idle_48.png
(index):1 %c minusnode.gif
(index):1 %c openfolder.gif
(index):1 %c plusnode.gif
(index):1 %c python.gif
(index):1 %c tk.gif
(index):1 %c CREDITS.txt
(index):1 %c ChangeLog
(index):1 %c HISTORY.txt
(index):1 %c NEWS.txt
(index):1 %c NEWS2x.txt
(index):1 %c README.txt
(index):1 %c TODO.txt
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c autocomplete.py
(index):1 %c autocomplete_w.py
(index):1 %c autoexpand.py
(index):1 %c browser.py
(index):1 %c calltip.py
(index):1 %c calltip_w.py
(index):1 %c codecontext.py
(index):1 %c colorizer.py
(index):1 %c config-extensions.def
(index):1 %c config-highlight.def
(index):1 %c config-keys.def
(index):1 %c config-main.def
(index):1 %c config.py
(index):1 %c config_key.py
(index):1 %c configdialog.py
(index):1 %c debugger.py
(index):1 %c debugger_r.py
(index):1 %c debugobj.py
(index):1 %c debugobj_r.py
(index):1 %c delegator.py
(index):1 %c dynoption.py
(index):1 %c editor.py
(index):1 %c extend.txt
(index):1 %c filelist.py
(index):1 %c format.py
(index):1 %c grep.py
(index):1 %c help.html
(index):1 %c help.py
(index):1 %c help_about.py
(index):1 %c history.py
(index):1 %c hyperparser.py
(index):1 %c idle.bat
(index):1 %c idle.py
(index):1 %c idle.pyw
(index):1 %c iomenu.py
(index):1 %c macosx.py
(index):1 %c mainmenu.py
(index):1 %c multicall.py
(index):1 %c outwin.py
(index):1 %c parenmatch.py
(index):1 %c pathbrowser.py
(index):1 %c percolator.py
(index):1 %c pyparse.py
(index):1 %c pyshell.py
(index):1 %c query.py
(index):1 %c redirector.py
(index):1 %c replace.py
(index):1 %c rpc.py
(index):1 %c run.py
(index):1 %c runscript.py
(index):1 %c scrolledlist.py
(index):1 %c search.py
(index):1 %c searchbase.py
(index):1 %c searchengine.py
(index):1 %c sidebar.py
(index):1 %c squeezer.py
(index):1 %c stackviewer.py
(index):1 %c statusbar.py
(index):1 %c textview.py
(index):1 %c tooltip.py
(index):1 %c tree.py
(index):1 %c undo.py
(index):1 %c util.py
(index):1 %c window.py
(index):1 %c zoomheight.py
(index):1 %c zzdummy.py
(index):1 %c importlib
(index):1 %c metadata
(index):1 %c __init__.py
(index):1 %c _adapters.py
(index):1 %c _collections.py
(index):1 %c _functools.py
(index):1 %c _itertools.py
(index):1 %c _meta.py
(index):1 %c _text.py
(index):1 %c resources
(index):1 %c __init__.py
(index):1 %c _adapters.py
(index):1 %c _common.py
(index):1 %c _itertools.py
(index):1 %c _legacy.py
(index):1 %c abc.py
(index):1 %c readers.py
(index):1 %c simple.py
(index):1 %c __init__.py
(index):1 %c _abc.py
(index):1 %c _bootstrap.py
(index):1 %c _bootstrap_external.py
(index):1 %c abc.py
(index):1 %c machinery.py
(index):1 %c readers.py
(index):1 %c simple.py
(index):1 %c util.py
(index):1 %c json
(index):1 %c __init__.py
(index):1 %c decoder.py
(index):1 %c encoder.py
(index):1 %c scanner.py
(index):1 %c tool.py
(index):1 %c lib-dynload
(index):1 %c .empty
(index):1 %c lib2to3
(index):1 %c fixes
(index):1 %c __init__.py
(index):1 %c fix_apply.py
(index):1 %c fix_asserts.py
(index):1 %c fix_basestring.py
(index):1 %c fix_buffer.py
(index):1 %c fix_dict.py
(index):1 %c fix_except.py
(index):1 %c fix_exec.py
(index):1 %c fix_execfile.py
(index):1 %c fix_exitfunc.py
(index):1 %c fix_filter.py
(index):1 %c fix_funcattrs.py
(index):1 %c fix_future.py
(index):1 %c fix_getcwdu.py
(index):1 %c fix_has_key.py
(index):1 %c fix_idioms.py
(index):1 %c fix_import.py
(index):1 %c fix_imports.py
(index):1 %c fix_imports2.py
(index):1 %c fix_input.py
(index):1 %c fix_intern.py
(index):1 %c fix_isinstance.py
(index):1 %c fix_itertools.py
(index):1 %c fix_itertools_imports.py
(index):1 %c fix_long.py
(index):1 %c fix_map.py
(index):1 %c fix_metaclass.py
(index):1 %c fix_methodattrs.py
(index):1 %c fix_ne.py
(index):1 %c fix_next.py
(index):1 %c fix_nonzero.py
(index):1 %c fix_numliterals.py
(index):1 %c fix_operator.py
(index):1 %c fix_paren.py
(index):1 %c fix_print.py
(index):1 %c fix_raise.py
(index):1 %c fix_raw_input.py
(index):1 %c fix_reduce.py
(index):1 %c fix_reload.py
(index):1 %c fix_renames.py
(index):1 %c fix_repr.py
(index):1 %c fix_set_literal.py
(index):1 %c fix_standarderror.py
(index):1 %c fix_sys_exc.py
(index):1 %c fix_throw.py
(index):1 %c fix_tuple_params.py
(index):1 %c fix_types.py
(index):1 %c fix_unicode.py
(index):1 %c fix_urllib.py
(index):1 %c fix_ws_comma.py
(index):1 %c fix_xrange.py
(index):1 %c fix_xreadlines.py
(index):1 %c fix_zip.py
(index):1 %c pgen2
(index):1 %c __init__.py
(index):1 %c conv.py
(index):1 %c driver.py
(index):1 %c grammar.py
(index):1 %c literals.py
(index):1 %c parse.py
(index):1 %c pgen.py
(index):1 %c token.py
(index):1 %c tokenize.py
(index):1 %c Grammar.txt
(index):1 %c Grammar3.12.1.final.0.pickle
(index):1 %c PatternGrammar.txt
(index):1 %c PatternGrammar3.12.1.final.0.pickle
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c btm_matcher.py
(index):1 %c btm_utils.py
(index):1 %c fixer_base.py
(index):1 %c fixer_util.py
(index):1 %c main.py
(index):1 %c patcomp.py
(index):1 %c pygram.py
(index):1 %c pytree.py
(index):1 %c refactor.py
(index):1 %c logging
(index):1 %c __init__.py
(index):1 %c config.py
(index):1 %c handlers.py
(index):1 %c multiprocessing
(index):1 %c dummy
(index):1 %c __init__.py
(index):1 %c connection.py
(index):1 %c __init__.py
(index):1 %c connection.py
(index):1 %c context.py
(index):1 %c forkserver.py
(index):1 %c heap.py
(index):1 %c managers.py
(index):1 %c pool.py
(index):1 %c popen_fork.py
(index):1 %c popen_forkserver.py
(index):1 %c popen_spawn_posix.py
(index):1 %c popen_spawn_win32.py
(index):1 %c process.py
(index):1 %c queues.py
(index):1 %c reduction.py
(index):1 %c resource_sharer.py
(index):1 %c resource_tracker.py
(index):1 %c shared_memory.py
(index):1 %c sharedctypes.py
(index):1 %c spawn.py
(index):1 %c synchronize.py
(index):1 %c util.py
(index):1 %c pydoc_data
(index):1 %c __init__.py
(index):1 %c _pydoc.css
(index):1 %c topics.py
(index):1 %c re
(index):1 %c __init__.py
(index):1 %c _casefix.py
(index):1 %c _compiler.py
(index):1 %c _constants.py
(index):1 %c _parser.py
(index):1 %c site-packages
(index):1 %c README.txt
(index):1 %c sqlite3
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c dbapi2.py
(index):1 %c dump.py
(index):1 %c tkinter
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c colorchooser.py
(index):1 %c commondialog.py
(index):1 %c constants.py
(index):1 %c dialog.py
(index):1 %c dnd.py
(index):1 %c filedialog.py
(index):1 %c font.py
(index):1 %c messagebox.py
(index):1 %c scrolledtext.py
(index):1 %c simpledialog.py
(index):1 %c tix.py
(index):1 %c ttk.py
(index):1 %c tomllib
(index):1 %c __init__.py
(index):1 %c _parser.py
(index):1 %c _re.py
(index):1 %c _types.py
(index):1 %c turtledemo
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c bytedesign.py
(index):1 %c chaos.py
(index):1 %c clock.py
(index):1 %c colormixer.py
(index):1 %c forest.py
(index):1 %c fractalcurves.py
(index):1 %c lindenmayer.py
(index):1 %c minimal_hanoi.py
(index):1 %c nim.py
(index):1 %c paint.py
(index):1 %c peace.py
(index):1 %c penrose.py
(index):1 %c planet_and_moon.py
(index):1 %c rosette.py
(index):1 %c round_dance.py
(index):1 %c sorting_animate.py
(index):1 %c tree.py
(index):1 %c turtle.cfg
(index):1 %c two_canvases.py
(index):1 %c yinyang.py
(index):1 %c unittest
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c _log.py
(index):1 %c async_case.py
(index):1 %c case.py
(index):1 %c loader.py
(index):1 %c main.py
(index):1 %c mock.py
(index):1 %c result.py
(index):1 %c runner.py
(index):1 %c signals.py
(index):1 %c suite.py
(index):1 %c util.py
(index):1 %c urllib
(index):1 %c __init__.py
(index):1 %c error.py
(index):1 %c parse.py
(index):1 %c request.py
(index):1 %c response.py
(index):1 %c robotparser.py
(index):1 %c venv
(index):1 %c scripts
(index):1 %c common
(index):1 %c Activate.ps1
(index):1 %c activate
(index):1 %c posix
(index):1 %c activate.csh
(index):1 %c activate.fish
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c wsgiref
(index):1 %c __init__.py
(index):1 %c handlers.py
(index):1 %c headers.py
(index):1 %c simple_server.py
(index):1 %c types.py
(index):1 %c util.py
(index):1 %c validate.py
(index):1 %c xml
(index):1 %c dom
(index):1 %c NodeFilter.py
(index):1 %c __init__.py
(index):1 %c domreg.py
(index):1 %c expatbuilder.py
(index):1 %c minicompat.py
(index):1 %c minidom.py
(index):1 %c pulldom.py
(index):1 %c xmlbuilder.py
(index):1 %c etree
(index):1 %c ElementInclude.py
(index):1 %c ElementPath.py
(index):1 %c ElementTree.py
(index):1 %c __init__.py
(index):1 %c cElementTree.py
(index):1 %c parsers
(index):1 %c __init__.py
(index):1 %c expat.py
(index):1 %c sax
(index):1 %c __init__.py
(index):1 %c _exceptions.py
(index):1 %c expatreader.py
(index):1 %c handler.py
(index):1 %c saxutils.py
(index):1 %c xmlreader.py
(index):1 %c __init__.py
(index):1 %c xmlrpc
(index):1 %c __init__.py
(index):1 %c client.py
(index):1 %c server.py
(index):1 %c zipfile
(index):1 %c _path
(index):1 %c __init__.py
(index):1 %c glob.py
(index):1 %c __init__.py
(index):1 %c __main__.py
(index):1 %c zoneinfo
(index):1 %c __init__.py
(index):1 %c _common.py
(index):1 %c _tzpath.py
(index):1 %c _zoneinfo.py
(index):1 %c LICENSE.txt
(index):1 %c __future__.py
(index):1 %c __hello__.py
(index):1 %c _aix_support.py
(index):1 %c _collections_abc.py
(index):1 %c _compat_pickle.py
(index):1 %c _compression.py
(index):1 %c _markupbase.py
(index):1 %c _osx_support.py
(index):1 %c _py_abc.py
(index):1 %c _pydatetime.py
(index):1 %c _pydecimal.py
(index):1 %c _pyio.py
(index):1 %c _pylong.py
(index):1 %c _sitebuiltins.py
(index):1 %c _strptime.py
(index):1 %c _sysconfigdata__emscripten_wasm32-emscripten.py
(index):1 %c _threading_local.py
(index):1 %c _weakrefset.py
(index):1 %c abc.py
(index):1 %c aifc.py
(index):1 %c antigravity.py
(index):1 %c argparse.py
(index):1 %c ast.py
(index):1 %c base64.py
(index):1 %c bdb.py
(index):1 %c bisect.py
(index):1 %c bz2.py
(index):1 %c cProfile.py
(index):1 %c calendar.py
(index):1 %c cgi.py
(index):1 %c cgitb.py
(index):1 %c chunk.py
(index):1 %c cmd.py
(index):1 %c code.py
(index):1 %c codecs.py
(index):1 %c codeop.py
(index):1 %c colorsys.py
(index):1 %c compileall.py
(index):1 %c configparser.py
(index):1 %c contextlib.py
(index):1 %c contextvars.py
(index):1 %c copy.py
(index):1 %c copyreg.py
(index):1 %c crypt.py
(index):1 %c csv.py
(index):1 %c dataclasses.py
(index):1 %c datetime.py
(index):1 %c decimal.py
(index):1 %c difflib.py
(index):1 %c dis.py
(index):1 %c doctest.py
(index):1 %c enum.py
(index):1 %c filecmp.py
(index):1 %c fileinput.py
(index):1 %c fnmatch.py
(index):1 %c fractions.py
(index):1 %c ftplib.py
(index):1 %c functools.py
(index):1 %c genericpath.py
(index):1 %c getopt.py
(index):1 %c getpass.py
(index):1 %c gettext.py
(index):1 %c glob.py
(index):1 %c graphlib.py
(index):1 %c gzip.py
(index):1 %c hashlib.py
(index):1 %c heapq.py
(index):1 %c hmac.py
(index):1 %c imaplib.py
(index):1 %c imghdr.py
(index):1 %c inspect.py
(index):1 %c io.py
(index):1 %c ipaddress.py
(index):1 %c keyword.py
(index):1 %c linecache.py
(index):1 %c locale.py
(index):1 %c lzma.py
(index):1 %c mailbox.py
(index):1 %c mailcap.py
(index):1 %c mimetypes.py
(index):1 %c modulefinder.py
(index):1 %c netrc.py
(index):1 %c nntplib.py
(index):1 %c ntpath.py
(index):1 %c nturl2path.py
(index):1 %c numbers.py
(index):1 %c opcode.py
(index):1 %c operator.py
(index):1 %c optparse.py
(index):1 %c os.py
(index):1 %c pathlib.py
(index):1 %c pdb.py
(index):1 %c pickle.py
(index):1 %c pickletools.py
(index):1 %c pipes.py
(index):1 %c pkgutil.py
(index):1 %c platform.py
(index):1 %c plistlib.py
(index):1 %c poplib.py
(index):1 %c posixpath.py
(index):1 %c pprint.py
(index):1 %c profile.py
(index):1 %c pstats.py
(index):1 %c pty.py
(index):1 %c py_compile.py
(index):1 %c pyclbr.py
(index):1 %c pydoc.py
(index):1 %c queue.py
(index):1 %c quopri.py
(index):1 %c random.py
(index):1 %c reprlib.py
(index):1 %c rlcompleter.py
(index):1 %c runpy.py
(index):1 %c sched.py
(index):1 %c secrets.py
(index):1 %c selectors.py
(index):1 %c shelve.py
(index):1 %c shlex.py
(index):1 %c shutil.py
(index):1 %c signal.py
(index):1 %c site.py
(index):1 %c smtplib.py
(index):1 %c sndhdr.py
(index):1 %c socket.py
(index):1 %c socketserver.py
(index):1 %c sre_compile.py
(index):1 %c sre_constants.py
(index):1 %c sre_parse.py
(index):1 %c ssl.py
(index):1 %c stat.py
(index):1 %c statistics.py
(index):1 %c string.py
(index):1 %c stringprep.py
(index):1 %c struct.py
(index):1 %c subprocess.py
(index):1 %c sunau.py
(index):1 %c symtable.py
(index):1 %c sysconfig.py
(index):1 %c tabnanny.py
(index):1 %c tarfile.py
(index):1 %c telnetlib.py
(index):1 %c tempfile.py
(index):1 %c textwrap.py
(index):1 %c this.py
(index):1 %c threading.py
(index):1 %c timeit.py
(index):1 %c token.py
(index):1 %c tokenize.py
(index):1 %c trace.py
(index):1 %c traceback.py
(index):1 %c tracemalloc.py
(index):1 %c tty.py
(index):1 %c turtle.py
(index):1 %c types.py
(index):1 %c typing.py
(index):1 %c uu.py
(index):1 %c uuid.py
(index):1 %c warnings.py
(index):1 %c wave.py
(index):1 %c weakref.py
(index):1 %c webbrowser.py
(index):1 %c xdrlib.py
(index):1 %c zipapp.py
(index):1 %c zipimport.py
(index):1 %c .DS_Store
(index):1 %c .DS_Store
(index):1 %c .DS_Store
rdeepak2002
(Deepak Ramalingam)
September 7, 2024, 10:22pm
4
Also for additional context, this is what my main application code looks like in terms of interacting with CPython:
#define PY_SSIZE_T_CLEAN
#include <Python.h>
...
{
...
Py_InitializeEx(0);
PyRun_SimpleString("print('Hello from Python!')");
if (Py_FinalizeEx() < 0) {
exit(120);
}
...
}
rdeepak2002
(Deepak Ramalingam)
September 8, 2024, 11:44pm
5
I’ve also tried this filesystem setup in Emscripten too: