[英]Unable to import a python package in Pyodide
我正在嘗試在Pyodide
中導入自定義包,但它不起作用。
目錄結構是
index.html
package/
__init__.py
我的 index.html 看起來像這樣
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.jsdelivr.net/pyodide/v0.19.1/full/pyodide.js"></script>
</head>
<body>
Pyodide test page <br />
Open your browser console to see Pyodide output
<script type="text/javascript">
async function main() {
let pyodide = await loadPyodide({
indexURL: "https://cdn.jsdelivr.net/pyodide/v0.19.1/full/",
});
let mypkg = pyodide.pyimport("package");
mypkg.main();
}
main();
</script>
</body>
</html>
有誰知道為什么會這樣?
我收到錯誤
ModuleNotFoundError: No module named 'package'
對於 Pyodide,Python 直接在瀏覽器中運行,因此它無法查看本地文件系統中的文件。 它只能在Emscripten 提供的虛擬文件系統中導入模塊。
如Pyodide 文檔中所述,您需要將文件復制到虛擬文件系統中才能運行。 有兩種可能,
python -m http.server
啟動 Python Web 服務器。 import micropip await micropip.install('<url-to-the-wheel.whl>') import your_package
zip -r package.zip package/
await pyodide.runPythonAsync(` from pyodide.http import pyfetch response = await pyfetch("https://.../your_package.tar.gz") #.zip, .whl, ... await response.unpack_archive() # by default, unpacks to the current dir `) pkg = pyodide.pyimport("your_package"); pkg.do_something();
如果將此存檔解壓縮到與本地文件夾不同的文件夾,則需要將其添加到sys.path
以便 Python 找到它。我很好奇 await loadPyodide() 語句中的 indexURL 參數。 您已經將 URL 包含在 index.html 的頭部。 是否有必要在等待 loadPyodide 的調用中再次包含它? 文檔顯示 loadPyodide() 被調用時根本沒有任何參數,如下所示:
let pyodide = await loadPyodide();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.