在Windows上通过命令行运行jupyter

ele*_*rck 44 python jupyter jupyter-notebook

我在Windows 10,python 3.x via上安装了Jupyter

$ pip install jupyter
Run Code Online (Sandbox Code Playgroud)

安装工作正常,即使我确实重新启动了终端.

但试图跑

$ jupyter notebook
Run Code Online (Sandbox Code Playgroud)

'jupyter'不被识别为内部或外部命令,可操作程序或批处理文件.

我如何以及在哪里找到Jupyter的可执行文件?

小智 91

如果您完全确定您的python库路径在您的系统变量中(并且您可以在pip安装jupyter时找到该路径,您只需阅读一下)并且您仍然在Windows中遇到"命令未找到或识别"错误, 你可以试试:

python -m notebook
Run Code Online (Sandbox Code Playgroud)

对于我的Windows至少(Windows 10 Pro),拥有python -m是我从命令行运行我的python包而不会遇到某种错误的唯一方法

启动程序中的致命错误:无法使用'"创建进程

要么

找不到Errno'THIS_PROGRAM'

  • 对于 JupyterLab 使用 `python -m jupyterlab` (5认同)
  • 虽然您的答案提供了解决方案,但它并没有解释为什么会发生这种情况。我在这里回答了/sf/ask/2872440651/#66938692 (4认同)
  • 这对我有用,但我不明白为什么 `jupyter notebook` 命令不再起作用(在 Windows 10 上重新安装 python 后它停止工作) (3认同)
  • 我使用Ipython很多年了,这是我第一次遇到这个问题。我想(正如其他人所提到的)它与 Windows10 和运行“python -m notebook”有关!感谢您的解决方案。 (2认同)
  • `python -m Notebook` 就像魔法一样,感谢分享 (2认同)

小智 26

我有同样的问题,但是

py -m notebook
Run Code Online (Sandbox Code Playgroud)

为我工作.


Guz*_*ero 13

我遇到了完全相同的问题,这让我发疯。其他答案提供了解决方案,但它们没有解释为什么您和我遇到此问题。

我将尝试解释为什么会发生这种情况,然后提供一些解决方案。

你可以到最后看 TL;DR。

这是怎么回事?为什么会发生此错误?

我将尝试逐步回答,以便清楚地解释所有内容。如果你觉得开头太基础了,请看这篇“文章”的结尾。

我将首先从常见的事情开始,比如python从终端运行 shell 或运行pip. 您将了解为什么可以从终端执行此操作,我们最终还将了解为什么以及如何jupyter从终端运行笔记本。

准备好?开始吧!


你有没有想过为什么你可以python在终端(命令提示符)中输入并突然启动 Python 解释器?

Microsoft Windows [Version 10.0.18363.1440]
(c) 2019 Microsoft Corporation. All rights reserved.

C:\Users\YOUR-USERNAME>python
Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)

您可能已经知道(但可能不知道)这是因为 Python 已添加到 WindowsPATH环境变量中。您可能是在安装时或之后进行的

但是,这个PATH环境变量是什么?

它基本上允许您在命令提示符下运行位于变量中指定的路径内的任何可执行文件,而无需提供可执行文件的完整路径。

您可以使用以下命令检查该PATH变量的内容:

>>> import sys
>>> for path in sys.path:
        print(path)

C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\python39.zip
C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\DLLs
C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\lib
C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39
C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\lib\site-packages
... (some other paths were taken out for clarity)
Run Code Online (Sandbox Code Playgroud)

你可以看到这个文件夹:C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39. 这是安装 Python 3.9 版的地方。让我们检查一下它的内容:

<DIR>   DLLs
<DIR>   Doc
<DIR>   etc
<DIR>   include
<DIR>   Lib
<DIR>   libs
<DIR>   Scripts
<DIR>   share
<DIR>   tcl
<DIR>   Tools
        LICENSE.txt
        NEWS.txt
        python.exe
        python3.dll
        python39.dll
        pythonw.exe
        vcruntime140.dll
        vcruntime140_1.dll
Run Code Online (Sandbox Code Playgroud)

瞧!我们有python.exe文件(一个可执行文件)。我们在 中有一个 Python 可执行文件PATH,这就是为什么您只需键入python. 如果不是这种情况,您必须在终端中键入可执行文件的完整路径:

C:\Users\YOUR-USERNAME> C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\python)
Run Code Online (Sandbox Code Playgroud)

而不仅仅是:

C:\Users\YOUR-USERNAME> python
Run Code Online (Sandbox Code Playgroud)

当你使用时pip呢?

这是同样的原理。您可以pip从终端运行,因为变量中有一个pip可执行文件PATH

如果您转到C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\Scripts\PATH如上所示),您将看到许多可执行文件。其中之一是pip。其实我有三个版本:pip,pip3.9pip3.

Scripts 文件夹允许从终端运行可执行文件。pip您打算直接从终端运行的Like或其他库。该Scripts文件夹:

...不是为您设计的,它适用于作为您安装的模块的组件安装的脚本。例如,pip 是一个模块,但它也有一个同名的包装脚本 pip,它将安装在该目录中。

如果你在那里放了一些东西并且它在你的 PATH 中正确,那么它应该是可执行的

该包装脚本将是pip可执行文件。当这个可执行文件运行时,它会pip在 Python 安装文件夹中找到该文件夹并运行pip.

但是您也可以pip直接从安装文件夹 ( C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\Lib\site-packages) 运行,而不需要可执行pip文件。

但是,你怎么能做到呢?

我很高兴你问。有一种 Python方法可以将模块作为主模块运行(无需导入)。

python -m pip
Run Code Online (Sandbox Code Playgroud)

当您直接运行模块时,它的名称变为__main__. 什么-m是:

搜索sys.path命名模块并将其内容作为__main__ 模块执行。

什么是__main__

'__main__' 是顶级代码执行的范围的名称。

当从标准输入、脚本或交互式提示中读取时,模块的__name__设置等于'__main__'。...

我猜该pip可执行文件做了类似的事情,或者至少具有相同的效果:启动pip.


这与 Jupyter Notebook 有什么关系?!

认为Jupyter Notebook与 相同pip。如果要jupyter在终端中运行,则需要一个位于PATH.

我们已经看到,像pip或这样的模块的可执行文件jupyter位于这里C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\Scripts\

如果我检查文件夹的内容,我会看到:

easy_install-3.9.exe
easy_install.exe
f2py.exe
jsonschema.exe
jupyter-bundlerextension.exe
jupyter-console.exe
jupyter-nbconvert.exe
jupyter-nbextension.exe
jupyter-notebook.exe
jupyter-qtconsole.exe
jupyter-serverextension.exe
jupyter-trust.exe
pip.exe
pip3.9.exe
pip3.exe
Run Code Online (Sandbox Code Playgroud)

我看到已经提到的pip,pip3.9pip3。但我没有看到jupyter(单独的“ jupyter ”这个词)。

如果我jupyter在终端中输入,我会收到所有开始的错误:

'jupyter' is not recognized as an internal or external command, operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

我们终于找到了您的问题的答案!!!


'jupyter' 未被识别为命令,因为Scripts名为jupyter.


所以,让我们尝试一个不同的可执行文件。怎么样jupyter-notebook

答对了!笔记本正在运行!

Serving notebooks from local directory:
C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\Scripts
Jupyter Notebook 6.3.0 is running at:
http://localhost:8888/?token=... (edited)
or http://127.0.0.1:8888/?token=... (edited)
Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我没有jupyter名为“jupyter”的可执行文件。在官方文件说,使用jupyter notebook在终端上,但似乎在某些情况下,这是行不通的。而且我认为这与我上面提到的有关:文件夹中没有jupyter可执行Scripts文件。


如果你还记得,我告诉过你,你可以pip使用python -m pip.

碰巧你可以用jupyter. 我们只需要知道如何调用它。与 一样pip,我们必须检查安装第 3 方库的文件夹:C:\Users\YOUR-USERNAME\AppData\Local\Programs\Python\Python39\Lib\site-packages

你会看到jupyter_console,但这只是在终端中创建一个交互式笔记本,而不是你正在寻找的。您还将找到以 结尾的文件夹.dist.info,例如jupyter_console-6.4.0.dist-info. 这只是Wheel Binary Package builder 的元数据。您还会看到一个类似 的文件夹jupyterlab_pygments,但这针对JupyterLab. 我们想使用经典的 Jupyter Notebook。

我们想要的是运行notebook. 我们怎么知道呢?

您将在文件site-packages夹中看到文件夹 ( package ) notebook。里面有一个文件叫做 __main__.py

#__main__.py
if __name__ == '__main__':
    from notebook import notebookapp as app
    app.launch_new_instance()
Run Code Online (Sandbox Code Playgroud)

它调用notebookapp.py 这是一个“基于龙卷风Jupyter笔记本电脑服务器。” 是的,这就是我们所需要的。

我们可以看到的是launch_new_instancenotebookapp通话launch_instance()启动一个Jupyter应用的实例”。

完美的!我们在正确的文件夹中。要从 Python 交互式 shell 运行 jupyter notebook,我们必须使用以下命令运行 notebook 包:

python -m notebook
Run Code Online (Sandbox Code Playgroud)

*** 总结:解决方案 ***

tl;博士:

我已经解释并说明了为什么会发生此错误。

现在让我们总结一下解决方案:

  1. 要知道jupyter可执行文件的名称(在Scripts文件夹中),您可以直接从终端(命令提示符)运行:

     jupyter notebook
    
    Run Code Online (Sandbox Code Playgroud)

或作为:

    jupyter-notebook
Run Code Online (Sandbox Code Playgroud)

或者你有什么名字。

  1. 将笔记本作为 Python 的主模块运行:

     python -m notebook
    
    Run Code Online (Sandbox Code Playgroud)

我希望这对你的帮助和对我的帮助一样多。我愿意接受您的意见和建议。

  • 这是一个很好的解释,谢谢。我仍然无法找到我的 pip 包的可执行文件 - 我已经通过 Windows 应用商店安装了 python,因此 python 可执行文件位于 `C:\Users\&lt;user&gt;\AppData\Local\Microsoft\WindowsApps` (2认同)

Joh*_*n P 11

我在Windows 10中运行了Jupyter笔记本.我发现完成此任务的最简单方法是不依赖像Anaconda这样的发行版来使用Cygwin.

在Cygwin中安装python2,python2-devel,python2-numpy,python2-pip,tcl,tcl-devel,(我在下面列出了我安装的所有软件包的图像)以及你想要的任何其他python软件包.这是迄今为止最简单的选择.

然后运行此命令只安装jupyter notebook:

python -m pip install jupyter
Run Code Online (Sandbox Code Playgroud)

下面是我运行以添加更多库的实际命令,以防其他人也需要此列表:

python -m pip install scipy

python -m pip install scikit-learn

python -m pip install sklearn

python -m pip install pandas

python -m pip install matplotlib

python -m pip install jupyter
Run Code Online (Sandbox Code Playgroud)

如果上述任何命令失败,请不要担心解决方案在大多数情况下非常简单.你所做的是查看任何缺少的包/库的构建失败.

假设它显示缺少pyzmq然后关闭Cygwin,重新打开安装程序,进入包列表屏幕,显示所有的"完整",然后搜索名称如zmq并安装这些库并重新尝试上述命令.

使用这种方法,最终可以成功地完成所有缺少的依赖项.

Cygwin包列表

一旦安装好所有东西,然后在Cygwin中运行goto你想要成为笔记本ui树的"根"的文件夹并输入:

jupyter notebook
Run Code Online (Sandbox Code Playgroud)

这将启动笔记本并显示如下输出:

$ jupyter notebook
[I 19:05:30.459 NotebookApp] Serving notebooks from local directory: 
[I 19:05:30.459 NotebookApp] 0 active kernels
[I 19:05:30.459 NotebookApp] The Jupyter Notebook is running at: 
[I 19:05:30.459 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).

Copy/paste this URL into your browser when you connect for the first time, to login with a token:

http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Run Code Online (Sandbox Code Playgroud)


ele*_*rck 10

$ python -m pip install jupyter --user
$ jupyter notebook
Run Code Online (Sandbox Code Playgroud)

如果这不起作用。

pip不会将jupyter直接添加到本地路径。

来自的输出

$ which python
/c/Users/<username>/AppData/Local/Programs/Python/Python35-32/python
Run Code Online (Sandbox Code Playgroud)

经过一番挖掘后,我在文件夹中找到了jupyter的可执行文件:

C:\Users\<username>\AppData\Roaming\Python\Python35\Scripts\jupyter.exe
Run Code Online (Sandbox Code Playgroud)

本地和漫游文件夹之间的区别

因此,如果您希望能够通过命令行执行程序,则需要将其添加到%PATH变量中。这是执行此操作的Powershell脚本。确保添加“;” 在添加新路径之前。

$ [Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Users\<username>\AppData\Roaming\Python\Python35\Scripts", [EnvironmentVariableTarget]::User)
Run Code Online (Sandbox Code Playgroud)

  • “which”不是命令提示符或 Powershell 命令,因此您必须在 Git Bash 或其他命令中运行它。在命令提示符中,您可以改用“where”。 (5认同)
  • 谢谢你。几个月前我一直在寻找这个解决方案,但放弃了。最后,我发现它深深地刺在这里 (2认同)

小智 6

您可以将以下内容添加到您的路径中

C:\[Python Installation path]\Scripts
Run Code Online (Sandbox Code Playgroud)

例如C:\Python27\Scripts

它将开始适用于 jupyter 以及您将在此处执行的所有其他 pip 安装。


M. *_*put 5

在适用于 Windows 10 的Python 3.7.6中。安装后,我使用这些命令。

1. pip install notebook
2. python -m notebook
Run Code Online (Sandbox Code Playgroud)

或者

C:\Users\Hamza\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.7_qbz5n2kfra8p0\LocalCache\local-packages\Python37\Scripts。

对于我的电脑,python 脚本位于上述路径中。您可以在环境变量中添加此路径。然后运行命令。

1. jupyter notebook
Run Code Online (Sandbox Code Playgroud)