未提供项目说明

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如何使用MVC设计模式观察嵌套对象   java将多个客户端连接到服务器   合并Java Web应用程序   Spring Security中未捕获java AuthenticationSuccessEvent   java Firebase JSON到Arraylist内部的Arraylist,存在对象问题   在Java15的sealedclasses特性中,final类和非密封类之间有什么区别?   java我可以使用数组。copyOf制作二维数组的防御副本?   java球不会在屏幕上移动   Java类如何在同一个文件中包含两个类?   java使用“Character.isWhiteSpace”删除所有空白   java阻止在RealmList中保存时创建领域对象   如何仅在ConnectionFactory上使用Java JMS身份验证   spring可以强制java对象在运行时实现接口吗?   socket无法在JAVA中使用TCP启用双工模式通信