未提供项目说明

vip-ipykernel的Python项目详细描述


ViP IPykernel

LifecycleGitHub Release DateReleasePyPI

GitHub Workflow Status (main)Codecov

父级IPykernel中的Venv-一个用于Jupyter的IPython内核,它运行最接近的Venv

概述

您是否在所有环境中使用venv?你把朱庇特从一个 系统/用户安装位置还是通过JupyterHub?你厌倦了做一个 每一个venv的内核?那么这就是给你的包裹!

vip ipykernel重写默认的python3内核并将其替换为一个 它将向上遍历目录,直到找到.venv目录,如果 如果找到一个,它将从该目录中用python启动内核,如果 它找不到venv,那么它将使用默认的python3继续运行。

注意:您的venv中必须安装ipykernel,因为这个“内核”只是 在本地venv搜索并启动ipykernel。如果ipykernel不是 在venv内部可用,则无法启动。

只需安装一次,您可以使用pip install vip-ipykernel --user将其安装到本地用户环境中。

安装包后,运行python3 -m vip_ipykernel.kernelspec --user 要安装内核,现在当您使用默认的python3运行笔记本时 内核它将使用父目录中的venv。

如果要还原更改,请运行python3 -m ipykernel install --user, 这将重新安装默认的python3内核。

或者,如果不想覆盖默认内核,那么可以 将名称(python3 -m vip_ipykernel.kernelspec --user --name venv-kernel)传递给 这样内核就分别出现在内核列表和默认值列表中 行为没有改变。

工作原理

标准的python3内核是:

{
 "argv": [
  "/usr/bin/python3",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

这只是说“使用python3运行带有参数的ipykernel_launcher-f {connection_file}。当您安装vip ipykernel时,它将替换为:

^{pr2}$

它将运行vip_ipykernel.vip_ipykernel_launcher模块, 给它传递参数-m ipykernel_launcher -f {connection_file}。这个 模块运行一个在当前目录中查找的函数venv_search,并且 一直到任何父目录,直到找到.venv或{}目录 包含bin/python3

如果它找到一个包含python3的venv,它将参数-m ipykernel_launcher -f {connection_file}传递给python可执行文件,然后启动 并以同样的方式将该venv的内核连接到当前会话 为特定的venv安装的内核会。

如果找不到venv,那么它将默认为系统python可执行文件 其行为类似于标准的python3内核。

注意事项和陷阱

VSCode Jupyter笔记本电脑集成

VSCode用自己的系统管理笔记本的内核,因此它不会使用 vip伊皮克内尔。

Venv名称

目前只搜索名为.venvvenv的venv,如果您的venv有 另一个名字是找不到的,如果你有多个venv可用 然后第一个(按字母数字排序,所以.venv优先于 venv)将被使用。

致谢

内核实现和测试主要是直接从 带有一些小调的ipykernel project 如果可能的话,修改搜索venv并从中启动python。

托多

  • []将测试扩展到不同版本的ipykernel/jupyter_core
  • []查看显示内核错误的方法
  • []支持其他环境:
    • []诗歌创作的小王子(poetry env info --path
    • []Pipenv创建了VENV
    • []Pyenv创建了VENV
    • []Conda创建的环境
    • []用户配置的venvs
    • []从vscode配置中读取?在
    • []等。。。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败