问题
我偶然发现了pyscript,希望用它来为mkdocs中的python代码编写文档。我已经考虑过导入我自己的模块。单个文件可以工作。我如何使用pyscript导入我自己的模块?
- 运行示例的要求:
- python软件包
numpy
($ pip install numpy
) - python软件包
matplotlib
($ pip install matplotlib
) - 用于在本地主机上进行实时预览的本地Web服务器(eq.
$ npm install -g live-server
) - 下面是一个使用"只导入一个python文件"方法的例子,见
from example import myplot
行。 - 当我将行更改为
from package.example import myplot
时,它不工作,我在firefox/chromium中得到以下错误:
JsException(PythonError: Traceback (most recent call last): File "/lib/python3.10/site-packages/_pyodide/_base.py", line 429, in eval_code .run(globals, locals) File "/lib/python3.10/site-packages/_pyodide/_base.py", line 300, in run coroutine = eval(self.code, globals, locals) File "", line 1, in ModuleNotFoundError: No module named 'package' )
我在Github上找到了这个讨论,但是当我试图跟随的时候我迷路了。
示例
- 文件夹结构**
├── index.html
└── pycode/
├── example.py
└── package/
├── example.py
└── __init__.py
- 一米七三**
<!doctype html>
<html>
<head>
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css"/>
<py-env>
- numpy
- matplotlib
- paths:
- ./pycode/example.py
- ./pycode/package
</py-env>
</head>
<body>
<div id="lineplot"></div>
<py-script>
from example import myplot
import matplotlib.pyplot as plt
theta,r = myplot(4)
fig, ax = plt.subplots(
subplot_kw = {'projection': 'polar'}
)
ax.plot(theta, r)
ax.set_rticks([0.5, 1, 1.5, 2])
ax.grid(True)
pyscript.write('lineplot',fig)
</py-script>
</body>
</html>
- 一米八米一x**
import numpy as np
def myplot(val:int):
r = np.arange(0, 2, 0.01)
theta = val * np.pi * r
return theta,r
- 一米九十一**
__all__ = [ 'example.py' ]
- 网页浏览器中的预期结果**
2条答案
按热度按时间fnvucqvd1#
你想要实现的文件夹结构在PyScipt Alpha中是不可能实现的-'它的
paths
功能相当有限,谢天谢地,在PyScript 2022.12.1中是可以实现的,这是编写本文时的最新版本。首先,您需要将您的和标记指向最新版本:
已重命名,其语法也有很大不同。要加载包,关键字为
packages
:最后,要以结构化的方式将文件加载到浏览器内的文件系统中,可以使用fetch配置,这是的另一个新特性。请查看py-config文档的用例部分,特别是示例#6,它与您的情况类似:
最后,完整的工作示例如下所示:
有关获取配置及其工作原理的更多内容,请参阅2022.12.1发布版博客文章中的这篇文章。
toe950272#
https://realpython.com/pyscript-python-in-browser/#modules-missing-from-the-python-standard-library
本页对pyscript中的模块进行了深入分析
你将需要上面的东西和你自己的文件名。文件路径是相对于你的HTML页面
您也不能直接导入一个包,只导入模块,您可以使用上面的代码并找出一个解决方案,或者您可以:
你不能使用路径加载Python包,只能使用模块。如果你有一个纯Python包,那么构建一个wheel发行版,并将其与其他文件一起托管,或者将其上传到PyPI。