在jupyter笔记本电脑中,如果python笔记本电脑的当前内核上安装了一些库,我可以很容易地使用python代码进行检查。
然而,也存在";主机";内核,它有自己的python环境(即调用jupyter notebook
时启动的python进程(。根据主机上安装的库/扩展,可能无法在jupyter笔记本客户端本身上执行特定操作。
有没有一种方法可以从";客户端";笔记本感谢
您测试了!pip list
还是!pip freeze
?
要列出pipenv环境中本地安装的软件包及其版本号,请cd到pipenv项目中,然后输入以下命令:
pipenv lock -r
我想您可以使用!pip list
来显示当前env上安装的模块/库。但我不认为您可以查看扩展。
如果使用虚拟环境,请使用!pip list --local
或!pip freeze --local
。
这可以让你开始:
import sys
import os
for i in sys.path:
try:
print("->", i, ":")
print(repr(os.listdir(i or ".")))
except Exception:
print("can't list", i)
pass
注意,我的代码不是一个完整的解决方案,但它只是一个开始。我很快会尝试改进它,但即使是这样,开发自己的解决方案可能会立即对您有用。
它不做什么:
- 它不确定是否找到了包含有效包的python文件或目录,或者是不可导入的文件或目录
- 它跳过压缩的包(比如这个项目,它可能在sys.path:/home/pyodide/lib/python39.zip中(
- 它不试图找到内置包(那些编译成Python本身的包(。其中大部分已经加载,所以您可以在
sys.modules
中找到它们
如果你需要测试单个包,而不是得到一个完整的列表:你最好在try/except语句中使用"import":
try:
import something
except ImportError:
pass
# do what you want if the package isn't available
如果我理解正确,你可以运行:
help("modules")
或者您可以使用pydoc
进行工作:
import pydoc
!pydoc modules
我相信!pip列表应该可以工作——如果不能,那么pydoc很可能会工作,见上文。