Rumah >pembangunan bahagian belakang >Tutorial Python >Jalankan program Python dengan mudah dalam penyemak imbas.
Microsoft sumber terbuka MarkItDown baru-baru ini, program yang menukar fail Office kepada format Markdown. Projek ini dengan cepat naik ke senarai sohor kini GitHub selepas dikeluarkan.
Namun, memandangkan MarkItDown ialah program Python, ia mungkin mencabar untuk digunakan oleh pengguna bukan teknikal. Untuk menangani isu ini, saya terfikir untuk menggunakan teknologi WebAssembly untuk menjalankan kod Python terus dalam penyemak imbas.
Pyodide ialah program sumber terbuka yang menjalankan Python dalam penyemak imbas, menggunakan WebAssembly untuk mengalihkan CPython, jadi ia menyokong semua sintaks Python. Cloudflare's Python Workers juga menggunakan Pyodide.
Pyodide ialah pelabuhan CPython ke WebAssembly/Emscripten.
Pyodide memungkinkan untuk memasang dan menjalankan pakej Python dalam penyemak imbas menggunakan mikropip. Sebarang pakej Python tulen dengan roda yang tersedia pada PyPI disokong.
Banyak pakej dengan sambungan C juga telah dialihkan untuk digunakan dengan Pyodide. Ini termasuk pakej biasa seperti regex, PyYAML, lxml, dan pakej Python saintifik termasuk NumPy, panda, SciPy, Matplotlib dan scikit-learn. Pyodide dilengkapi dengan antara muka fungsi asing JavaScript ⟺ Python yang teguh yang membolehkan anda mencampurkan bahasa ini secara bebas dalam kod anda dengan geseran yang minimum. Ini termasuk sokongan menyeluruh untuk pengendalian ralat, async/menunggu dan banyak lagi.
Apabila digunakan dalam penyemak imbas, Python mempunyai akses penuh kepada API Web.
Cuba menjalankan MarkItDown adalah sangat lancar, membuktikan bahawa WebAssembly benar-benar masa depan pelayar.
Cabaran utama yang dihadapi dan penyelesaian:
Isu Pemindahan Fail: Bagaimana untuk menghantar fail yang dipilih pengguna ke masa jalan Python dalam Worker?
Isu Pemasangan Ketergantungan: Akses terhad kepada PyPI di tanah besar China.
Akhirnya, kami berjaya melaksanakan alat MarkItDown yang berjalan sepenuhnya dalam penyemak imbas. Jangan ragu untuk mencubanya di Office File to Markdown.
Berikut ialah kod teras untuk menjalankan Python dalam Worker:
// eslint-disable-next-line no-undef importScripts('https://testingcf.jsdelivr.net/pyodide/v0.26.4/full/pyodide.js') async function loadPyodideAndPackages() { // eslint-disable-next-line no-undef const pyodide = await loadPyodide() globalThis.pyodide = pyodide await pyodide.loadPackage('micropip') const micropip = pyodide.pyimport('micropip') // micropip.set_index_urls([ // 'https://pypi.your.domains/pypi/simple', // ]) await micropip.install('markitdown==0.0.1a2') } const pyodideReadyPromise = loadPyodideAndPackages() globalThis.onmessage = async (event) => { await pyodideReadyPromise const file = event.data try { console.log('file', file) const startTime = Date.now() globalThis.pyodide.FS.writeFile(`/${file.filename}`, file.buffer) await globalThis.pyodide.runPythonAsync(` from markitdown import MarkItDown markitdown = MarkItDown() result = markitdown.convert("/${file.filename}") print(result.text_content) with open("/${file.filename}.md", "w") as file: file.write(result.text_content) `) globalThis.postMessage({ filename: `${file.filename}.md`, content: globalThis.pyodide.FS.readFile(`/${file.filename}.md`, { encoding: 'utf8' }), time: Date.now() - startTime, }) } catch (error) { globalThis.postMessage({ error: error.message || 'convert error', filename: file.filename }) } }
Atas ialah kandungan terperinci Jalankan program Python dengan mudah dalam penyemak imbas.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!