当我们在物理实验室AR纯手动做实验的时候, 往往会遇到一些琐碎、麻烦但又不得不做的事情, 比如:重复的搭建某些电路, 调整元件的位置, 电路内部结构的重复。这些问题都可以通过使用physicsLab
生成这些电路结构来轻易解决!于是我写了physicsLab
, 让你能用Python
在物实做实验。
而在参与物实社区的时候, 有时候又会遇到一些手动很麻烦的情况, 我们就可以使用physicsLab.web
来通过网络api操作物实社区。
- 同时支持通过存档的文件名与存档名访问存档
- 不受实验室大小地随意摆放元件 (比如在实验室外悬空的元件)
- 将midi转换为物实对应的电路
- 修改物实的实验封面
- 获取用户的所有头像或实验用过的所有封面
更多好用的功能等你来发现
- 跨平台支持, 只要
Python3.8+
能在该平台上运行并且能够读写文件, 比如Windows7+
,Linux
,MacOS
,Android
- 支持物实所有实验类型:电学, 天体物理, 电与磁
- 支持物实全部元件
- 大多数物实网络api封装的支持 (直接与物实服务器进行交互)
自版本2.0.0
及之后, physicsLab
会逐步增加兼容的考虑与支持。承诺stable
的api将永远不会移除, 行为几乎不会改变, 除非物实更改了一些api的行为导致physicsLab的底层api的行为被迫发生改变或者更改几乎没有任何影响。
- v2.0.0: 承诺
ExperimentOpenedError, ExperimentClosedError, ExperimentExistError, ExperimentNotExistError
会stable
- v2.0.1: 承诺三大实验所有元件的类名会
stable
- v2.0.3: 承诺
class Experiment
会stable
- v2.0.4: 承诺
class User, anonymous_login, email_login, token_login
会stable
- Note: v2.0.4 将部分函数抛出TypeError的行为替换为了abort(), 因为我认为这个异常永远不应该被捕获。这是一个极小的breaking change但我认为有利于让physicsLab变得更好, 并且对使用者的影响微乎其微。
- v2.0.5: 承诺
__version__
会stable
physicsLab
的版本发布采取快照的方式, physicsLab
仅会维护trunk
pip install physicsLab
在某些非正常情况, 你可能无法顺利使用pip
, 此时你可以换为该命令来解决该问题:
python -m pip install physicsLab
Note: 在
Windows
下你可以输入py
来使用Python
,Linux, MacOS
下可能需要输入python3
或者python3.x
(python
加上你的Python
版本)来使用python
- 有一个并非必需的功能:播放midi(仅在Windows下可用)。你可以输入下面命令的任意一条:
pip install plmidi
pip install pygame
点击跳转至plmidi
- 物实存档使用了中文字符, 默认编码为
utf-8
。但在一些非正常情况, 存档的编码可能被改变。虽然physicsLab
有一定的处理存档编码问题的能力, 但如果还是出现了问题, 请输入该命令:
pip install chardet
此时physicsLab
会自动调用chardet
来处理更加棘手的文件编码问题。
- 如果下载成功, 就可以查看快速开始, 开始你的使用了
Note: 每次通过
physicsLab
生成了一个新的存档之后, 都需要重新加载物实的本地存档, 即点击从本地读取
, 再次点击进入对应存档
pip
安装的包会被放在site-packages
文件夹下
这大概率是因为pip安装的包所对应的site-packages
与你使用的Python
对应的site-packages
不一样导致的
解决方案:找到ide调用的python
对应的site-packages
, 然后把physicsLab
与physicsLab.egg-info
复制过去
同时我推荐去学一下Python
的虚拟环境venv
, 有效解决此问题
如果此方法失效了, 虽然这一定不是这个方法的问题, 但你还可以在python的开头写上这两行代码来解决这个问题:
import sys
sys.path.append("/your/path/of/physicsLab") # 将字符串替换为你想添加的路径
这个方法很丑陋但很简单好用, 可以帮你快速解决问题, 毕竟能跑起来就很不错了
其原理是Python
会在sys.path
这个列表里面的路径去寻找Python Package
, 若未找到则会报错。因此该方法的原理就是把Python
找不到的路径加进去, Python
就找到了
注:每次运行的时候的sys.path
都是临时的, 因此该方法必须让Python
在每次运行的时候都执行一遍
-
如果
physicsLab
抛出AssertionError
, 请报告 bug (请在issue中附上最小复现) -
目前
physicsLab
在windows
上的支持最好, 在其他操作系统上仅支持手动导入/导出存档(默认在physicsLabSav
文件夹中)。 -
在安卓上要使用
physicsLab
的话, 可以通过qpython
或者Termux
(推荐) 进行使用- 在
qpython v3.2.5
中大大削减了python在文件路径操作方面的权限, 这意味着在qpython上使用physicsLab生成的存档将很难被物实导入, 因为物实没权限访问不了, 但此问题在qpython v3.2.3中不存在, 推荐下载该版本。 Termux
的话, 需要设置输出存档的路径到/storage/emulated/0/
(不同安卓设备路径可能不同), 或者手动mv
一下生成的存档, 这样才能让物实访问对应的存档。- 不过由于安卓权限的问题, 用起来肯定没有电脑上方便。
- 在
-
由于
physicsLab
使用中文注释而且物实的存档也使用了中文, 因此我建议你手动在Python
代码的第一行添加如下注释:
# -*- coding: utf-8 -*-
不过由于编码导致问题的情况似乎很少
physicsLab
拥有优秀的与物实存档交互的能力, 你甚至可以使用程序完成部分工作之后你再继续完成或者让程序在你已完成的实验的基础上继续完成。 如此灵活的功能使得physicsLab
即使是在Python
的shell
上也能出色的完成工作!physicsLab
为纯Python
库, 其c拓展部分(播放midi的部分)被放到了plmidi
中, 但plmidi
不是必须需要的。纯Python
库通常意味着更容易使用, 更少的问题。- 封装了物实里的大量元件, 即使是未解锁的元件也可以轻易用脚本生成, 甚至一些常用的电路也被封装好了!
- 物理实验室存档的位置有点隐蔽, 但用该脚本生成实验时, 你无须亲自寻找这个文件在哪里。
- 外部依赖少
- 相比于手动做实验, 代码复用率更高, 许多逻辑电路已经被封装, 只需简单的一行调用即可生成。
- 程序有利于大型实验的创作
- 改存档做出来的实验往往有十分惊艳的效果!
- 一些零七八碎的内容: other physicsLab
- 主仓库(github): https://github.com/GoodenoughPhysicsLab/physicsLab
- 备份仓库(gitee): https://gitee.com/script2000/physicsLab
physicsLab
没有强行要求代码风格, 但需要注意与上下文保持一致
你可以从更新文档、bugfix、写测试代码开始入手