在Windows上创建和配置Jupyter Notebook和Lab的可移植版本。 第一部分

大家好 当我开始学习Python时,我是第一次安装Jupyter Notebook,然后尝试将在其中创建的应用程序转移到企业中,经常遇到各种问题。 用户名中的西里尔字母干扰了,然后设置没有转移,然后又发生了其他事情。 我主要依靠我自己克服了所有这些问题,使用Google并花费了大量时间来解决这些问题。


随着经验的增长,我学习了如何创建一个文件夹,其中包含可从一台计算机移植到另一台计算机的Python虚拟环境,Jupyter和Matplotlib设置,可移植程序(ffmpeg等)和字体。 我可以在家编写一个程序,将整个文件夹复制到企业计算机上,并确保不会丢失任何内容并且不会突如其来。 然后我以为这样的文件夹也可以交给Python中的新手,他将得到一个完全配置且可移植的环境。


目录




引言


近年来,Python已成为一种流行的编程语言。 它通常用于编写数学计算,分析大数据,机器学习以及构建神经网络。 随着asincasinc结构的出现,编写快速的Web框架成为可能。 从发行版到发行版,Python的性能都在逐步提高,并且使用Cython或Numba可使应用程序比其他编程语言更快。 例如, Vibora (en) Web框架的速度可与Go (en)解决方案的速度相媲美。 2018年,Python正式成为法国 (en)哈萨克斯坦 (en)的学校和大学的学习语言。 在俄罗斯,至少有一些部门改用Python,例如MSTU的RK-6 (ru)部门。 N.E. 鲍曼


开始学习Python以后,新用户有时会在安装必要的库和设置编程环境时遇到困难。 如果Windows用户名包含非拉丁字符,则某些库可能无法安装或启动。 新手用户可能无法在本地计算机上设置Jupyter Notebook。 如果安装在C:\驱动器上,如何在D:\驱动器上打开文件? 当我开始使用Python的第一步时,我还必须克服这一困难。


最后,如果所有问题都没有解决,则可能很难将应用程序转移给另一个用户。 我遇到了一种情况,即我为Python创建的虚拟环境拒绝在另一台计算机上工作。 此外,Jupyter Notebook和Matplotlib将其设置存储在用户文件夹中,这会使使用特定设置的应用程序的传输变得复杂。


解决上述问题的方法是在Windows上创建Jupyter Notebook和/或Jupyter Lab的完全可移植的程序集。 它存储Python解释器,其库和设置,所有必需的第三方库(包括Matplotlib和Jupyter)的设置都与用户名无关,并且如果在另一台计算机上运行它也不会发誓。 我们可以将这样的程序集打包到存档中,或者编写脚本或程序,以在绝对初学者的计算机上创建相同的程序集。 对于更高级的用户,可移植程序集可能会很有用,因为它允许您将Python环境和设置存储在不同位置的库中。 您可以将设置文件夹放置在与云存储同步的特殊位置:Dropbox,Mail.ru * cloud,Yandex或Google。 因此,所有计算机上都会自动获得具有相同设置的本地工作环境。


*是的,Linux下的客户端不再连接的同一个(ru) 。 如果他们在Windows下删除了相同的文件,我将不得不寻找替代文件。 路上1 TB并非免费。


为了便于理解材料,我决定描述Windows便携式组件的创建。 但是,此说明经过最少的修改,适合在Linux和Mac OS上创建程序集。 本文主要是针对初学者的,因此我尝试描述尽可能多的内容,以便于理解。


本文由两部分组成。 在第一部分中,我们将创建一个可移植的程序集,在第二部分中,我们将处理Jupyter Notebook,Jupyter Lab,IPython和Matplotlib的设置。



Jupyter便携式组装快速入门指南


  1. 创建文件夹C:\Dev 。 它将安装Minconda和便携式Jupyter *版本。
    *以下为Jupyter = Jupyter Notebook + Juputer Lab。


  2. https://conda.io/miniconda(zh 下载Miniconda安装程序。 根据操作系统的位深度,选择适用于Windows 64位或32位的Python 3。 在文件夹C:\Dev\Miniconda3安装C:\Dev\Miniconda3


  3. 为便携式Jupyter构建创建以下目录结构:


     C:\ Dev\ Jupyter\ dist\ apps\ conf\ backup\ ipython\ jupyter\ matplotlib\ fonts\ projects\ 

  4. 使用conda *为Python创建虚拟环境:


     C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes python=3 conda 

    *您可以通过添加-c conda-forge参数来使用conda-forge通道安装最新的库:


     C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda 

  5. 激活您的环境并使用pip *安装Python软件包:


     C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\activate pip --no-cache-dir install numpy scipy matplotlib jupyter jupyterlab 

    注意:如果您需要安装使用英特尔MKL库来加快计算速度的Numpy和Scipy,请使用 (en) intel-numpy代替numpyintel-scipy代替scipy (仅在Python 3.6中安装!):


     pip --no-cache-dir install intel-numpy intel-scipy matplotlib jupyter jupyterlab 

    安装后,请执行以下操作:


     conda.bat deactivate 

    *如果发生安装错误,请尝试以下操作:


     C:\Dev\Jupyter\dist\pyenv3.7-win64\Scirpts\activate conda config --add channels conda-forge conda install numpy scipy matplotlib jupyter jupyterlab 

    和安装后


     conda.bat deactivate 

  6. C:\Dev\Jupyter\dist文件夹中,创建一个setenv.bat文件,该文件将控制Jupyter和Matplotlib将存储其设置的位置:


     @echo off set conf_path=%~dp0\conf set JUPYTER_CONFIG_DIR=%conf_path%\jupyter set JUPYTER_DATA_DIR=%conf_path%\jupyter\data set JUPYTER_RUNTIME_DIR=%conf_path%\jupyter\data\runtime set IPYTHONDIR=%conf_path%\ipython set MPLCONFIGDIR=%conf_path%\matplotlib REM Matplotlib search FFMPEG in PATH variable only! set PATH=%~dp0\apps\ffmpeg\bin;%PATH% 

  7. C:\Dev\Jupyter\dist文件夹中,创建run_jupyter_notebook.bat文件以使用给定的参数启动Jupyter Notebook:


     @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-notebook.exe --notebook-dir=%1 

  8. 同样,在C:\Dev\Jupyter\dist文件夹中,创建run_jupyter_lab.bat文件以使用给定的参数启动Jupyter Lab:


     @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-lab.exe --notebook-dir=%1 

  9. C:\Dev\Jupyter\dist文件夹中,创建一个enable_extension.bat文件来激活Jupyter Notebook中的指定扩展名:


     @echo off REM Enable extension in Jupyter Notebook. REM Example: REM enable_extension.bat widgetsnbextension call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-nbextension.exe enable %1 

  10. 假设工作文件位于文件夹D:\my-projects 。 在此文件夹中,创建文件run_jupyter_notebook.batrun_jupyter_lab.bat快捷方式。 创建每个快捷方式后,转到其属性并清除“工作文件夹”行。 如果您不清除它,Jupyter将不会看到您需要的文件夹!


  11. Jupyter Portable Build已构建并可以设置和运行。 要开始使用,只需单击创建的快捷方式。 如果您决定不删除已安装的Miniconda,则可以C:\Dev\Miniconda3以下命令减小C:\Dev\Miniconda3的大小:


      C:\Dev\Miniconda3\Scripts\conda.exe clean --all 

    执行此命令后,转到C:\Dev\Miniconda3\pkgs然后清除.trash文件夹的内容。 只有这样,我们才能真正减小Miniconda3文件夹的大小。




安装Miniconda(Python 3.7)


让我们在C:\驱动器的根目录中创建Dev文件夹。 在此文件夹中,我添加了由于某种原因而不希望安装在C:\Program Files所有程序和开发工具。 例如,我在那里安装了Ruby,Go,Python,Jupyter,Msys,SQLite Studio等。


首先,我们需要安装Python。 Python有两个分支:Python 2和Python3。直到2020年,Python 2才受支持 因此 ,因此我们将仅安装Python 3。


要安装Python 3,他们通常会访问python.org官方网站(en) ,从那里下载并安装它。 但是,我们希望获得一个便携式组件,因此我们将做不同的工作:我们将下载并安装Miniconda。


什么是迷你康达? 实际上,这是带有预安装和配置的conda软件包conda Python。 conda控制台程序将允许我们创建一个文件夹,无论Miniconda随附哪个Python版本,Python都是我们需要的版本。 同样,使用conda ,您可以在此文件夹中安装几乎所有已知的Python库:Numpy,Scipy,Matplotlib,Sympy等。 安装Python及其库的文件夹称为虚拟环境。 适用于Python的库以称为包的特殊归档的形式出现。


Conda具有独特的功能,因此对于初学者和高级用户而言都很方便:


  • 通过conda安装的Python软件包已在Windows下编译。 尝试安装失败的可能性较小*。
  • 您可以使用所需的Python版本创建虚拟环境。 Miniconda安装了哪个版本的Python都没有关系。

*应该指出的是,用Python安装软件包的情况每年都在改善。 几年前,我无法通过pip安装Numpy(发生错误),我使用了conda 。 在2018年,我尝试了最新版本的pip ,并下载了带有.whl扩展名的文件(即所谓的“ wheel”),并且已经编译了Numpy,一切都很好。


因此,我们需要下载并安装Miniconda。 为此,请访问https://conda.io/miniconda(en 并选择Python 3中Windows的64位版本。如果您有32位计算机,则应下载32位版本。


Miniconda的安装方式与常规Windows应用程序相同:


  1. 运行安装程序,单击下一步


    01


  2. 我们同意我同意的许可协议


    02


  3. 我更喜欢所有用户安装,因为这将使我有机会指定安装路径。 选择“所有用户”项:


    03


  4. 将安装路径调整为C:\Dev\Miniconda3


    04


  5. 在这里,我同时选中了两个复选框。 “将Anaconda添加到系统PATH环境变量” conda将使conda命令可从任何目录在终端中使用。 如果不选中此框,唯一会改变的是在终端中而不是conda您需要输入conda.exe的完整路径。 我不安装Anaconda,因为它给我带来了很多不必要的东西,因此我忽略了设置此标志的不希望。 如果选中此框并在安装后改变主意,则只需从系统变量中删除conda 。 很简单 但是,如果您不知道,可以搜索或询问。 文章末尾的联系方式。
    我还要选中“将Anaconda注册为系统Python 3.7”框。 如果某些程序突然需要Python,它将使用Miniconda附带的Python。 此外,此复选框还将使python命令在终端中的任何文件夹中可用。 如果您以前没有安装过Python,建议选中此框。 如果已经安装了某些Python,我不建议立即选中此复选框,但如有必要,请调整系统变量。
    之后,单击“安装”,安装过程将开始:


    05


  6. 在安装过程中,您可以单击显示详细信息。 因此,您将看到有关在安装过程中实际发生的情况的更多信息。 但这不是必需的。


    07


  7. 安装完成后,将显示短语“已完成”,并且“下一步”按钮将变为可用。 点击下一步


    07


  8. 在最后一个窗口中,我们被邀请学习Anaconda Cloud(这是第一个标志)以及如何开始使用Anaconda(第二个标志)。 我不需要任何这些,因此我取消选中所有复选框,然后单击“完成”。 Miniconda安装完成。


    08



C:\Dev文件夹中安装Miniconda后,我们将看到一个新的Miniconda文件夹,其重量约为340 MB。 是的,这很多,她仍然会肿胀。 稍后,我将展示如何快速安全地减小其体积。


让我们转到Miniconda文件夹。 滚动浏览一下文件列表,我们将看到python.exe 。 在我的案例中安装了相同的Python 3.7(在Directory Opus的屏幕截图中)。


09


如果双击python.exe ,将打开一个控制台窗口,您可以在其中输入Python命令。


10


您可以在>>>之后输入测试内容


 import antigravity 

然后按Enter。 将打开一个默认浏览器,并在xkcd上显示Python漫画。


在文件夹C:\Dev\Miniconda\Scripts我们将找到conda.exe 。 这是非常控制台的命令,我们将使用它创建一个虚拟Python环境。



创建目录结构


现在我们都准备开始创建便携式Jupyter Notebook组件。 首先,创建以下目录结构:


 C:\ Dev\ Jupyter\ dist\ apps\ conf\ backup\ ipython\ jupyter\ matplotlib\ fonts\ projects\ 

Dev文件夹中,创建Jupyter文件夹。 依次在Jupyter文件夹中Jupyter创建distprojects文件夹。 在dist文件夹中,将存在一个Python虚拟环境,其中包含所有必需的库,配置文件,其他程序,字体-这是我们在Jupyter Notebook或Jupyter Lab环境中使用Python开发所必需的。 projects文件夹是projects的默认位置。 我通常不亲自使用此文件夹,它仍然是空的。 但是,如果需要将程序和配置的Jupyter一起转移到另一个用户,则将程序放在此projects文件夹中,对整个Jupyter文件夹进行存档,然后将存档发送给用户。


apps文件夹包含实用程序。 例如,我经常把FFMPEG的便携式版本放在那里,Matplotlib用来创建动画。


conf文件夹包含各种库的设置。 对于IPython,Jupyter和Matplotlib。


conf\backup文件夹中,我放置了设置文件的副本,以防将来弄乱设置。


fonts文件夹包含可以在例如Matplotlib中使用的字体。 我个人比较喜欢Roboto和PTSerif。


除了appsconffonts文件夹之外,您还可以根据需要创建其他文件夹。 例如,用于临时文件的temp文件夹。



创建一个可移植的虚拟Python环境



使用conda创建虚拟环境


打开命令提示符( + R→ cmd.exe →输入),然后输入*:


 C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes python=3 conda 


*要安装最新版本的库,可以通过-c conda-forge参数连接conda-forge通道:


 C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda 

如果以后需要删除conda-forge .condarc频道,请转到%userprofile%文件夹中的Explorer,在其中找到.condarc文件,用记事本打开它,然后删除conda-forge .condarc conda-forge


考虑此命令。 首先是conda.exe的完整路径。 如果在Minconda的安装过程中选中了“将Anaconda添加到系统PATH环境变量”,而不是完整路径,只需编写conda


单词create给出创建新环境的命令。 -p参数表示应在我们指定的位置创建此环境,而不是在C:\Dev\Miniconda3\envs 。 在示例中, pyenv3.7-win64了未来文件夹pyenv3.7-win64的完整路径和名称(解密:适用于Windows 64位的python 3.7环境)。 如果您在dist文件夹中打开了命令行,或者您使用cd提前转到了该文件夹,而不是完整路径,则可以编写pyenv3.7-win64


--copy参数告诉--copy ,软件包本身必须安装在虚拟环境中。 否则,该软件包将安装在C:\Dev\Miniconda3 ,并且在虚拟环境中将有一个链接。 在尝试在另一台计算机上运行虚拟环境之前,您不会注意到这种欺骗。


接下来是软件包清单。 首先,我们需要安装Python第三版本身。 我也表示conda 。 即 conda将安装两次:作为Miniconda的一部分,并在虚拟环境中安装。 在虚拟环境中安装conda大大增加其大小,但是将允许用户在未安装Miniconda的计算机上的虚拟环境中更新软件包。 这使虚拟环境完全自治。 创建虚拟环境后,您甚至可以卸载Miniconda,它将继续正常工作,好像什么都没发生。 没错,如果某些应用程序需要Python,我会离开Miniconda。


通常,除了Python和conda外,您可以立即指定必要的软件包,但在2018年我停止这样做,而是开始使用pip安装软件包。 首先,最新版本的pip开始使用已编译的库下载.whl文件,并且安装许多库的问题消失了。 其次,通过pip安装软件包时,虚拟环境的大小比通过conda安装软件包时小3倍。



创建虚拟环境时修复HTTP 000 CONNECTION FAILED


执行命令时的用户之一


 C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda 

我遇到以下内容的错误:


 > C:\Users\Asus>C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda Collecting package metadata: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/conda-forge/win-64/repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way. SSLError(MaxRetryError('HTTPSConnectionPool(host=\'conda.anaconda.org\', port=443): Max retries exceeded with url: /conda-forge/win-64/repodata.json (Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available."))')) 


我花了一个多小时来处理它,因为乍一看问题出在Miniconda安装不正确还是网络上。 一些公司用户实际上阻止了此资源,但是在家中的用户却出现了问题。 重新安装Miniconda没有帮助。


结果,事实证明此错误意味着conda.exe找不到openssl.exe文件。 结果,应用了以下解决方案:


  1. 创建了文件夹C:\Dev\openssl


  2. 在文件夹C:\Dev\Miniconda3\pkgs找到了一个以openssl开头的文件夹。 例如, openssl-1.1.1a-he774522_0 。 如果有多个文件夹,请选择名称中具有较大数字的文件夹。


  3. 在找到的文件夹中,查找openssl.exe文件,并将openssl.exe以及openssl.exe 所有文件和文件夹复制到C:\Dev\openssl



  4. 在Windows资源管理器中,转到“此计算机”(列出了计算机上的所有磁盘)。 在一个自由的地方,右键单击上下文菜单,然后选择最底部的“属性”项。



  5. 在打开的窗口中,找到“高级系统设置”:


    1549300231528


  6. 在“高级”选项卡上,找到“环境变量”按钮:



  7. 对于Windows 7和8:在“用户的环境变量”部分中,双击Path变量。 如果该行的末尾没有分号,则将其放在该行的末尾并添加:


     C:\Dev\openssl; 


    对于Windows 10:在“用户的环境变量”部分中,双击Path变量。 结果,将出现以下窗口:



    单击“创建”按钮,然后粘贴路径C:\Dev\openssl


  8. 关闭并再次打开命令提示符。 现在一切正常。 如果突然无法正常运行,则您需要搜索错误或联系论坛。




虚拟环境激活


虚拟环境的创建完成后,该窗口将如下所示:


13


创建虚拟环境后,通过pip安装软件包。 首先,您需要激活虚拟环境。 为此,请在命令窗口中输入:


 C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\activate 

如此一来,您应该获得以下内容:



该行开头的单词(base)表示我们已进入所需的虚拟环境。



在虚拟环境中安装Python软件包


现在您可以安装软件包*:


 pip --no-cache-dir install numpy scipy matplotlib jupyter jupyterlab 


参数--no-cache-dir告诉pip您不应缓存下载的软件包。 这将使我们不增加虚拟环境文件夹的大小。


*有一个英特尔开发的MKL(数学内核库) (en) ,该可以加快流行的Python库(特别是Numpy和Scipy)的大数据处理速度。 如果要安装使用MKL的Numpy和Scipy,则应使用 (en) intel-numpy而不是numpyintel-scipy而不是scipy


 pip --no-cache-dir install intel-numpy intel-scipy matplotlib jupyter jupyterlab 

我设法仅在使用Python 3.6的虚拟环境中安装了intel-numpyintel-scipy 。 如果要在具有Python 3.7的环境中将Numpy和Scipy与MKL结合使用,必须使用以下命令:


 conda install numpy scipy 

如果您不确定要放什么,请仅使用numpyscipy


如果在通过pip安装过程中遇到错误,请尝试通过conda安装有问题的软件包。 一个例子:


 conda install numpy scipy matplotlib jupyter jupyterlab 


Python


, , . *:


 conda.bat deactivate 

* deactivate , - , conda.bat deactivate . conda deactivate .



Jupyter


.bat , Jupyter Matplotlib dist\config , Jupyter Notebook Jupyter Lab.



Jupyter, IPython Matplotlib


Windows. , Jupyter Matplotlib , . C:\Dev\Jupyter\dist setenv.bat :


 @echo off set conf_path=%~dp0\conf set JUPYTER_CONFIG_DIR=%conf_path%\jupyter set JUPYTER_DATA_DIR=%conf_path%\jupyter\data set JUPYTER_RUNTIME_DIR=%conf_path%\jupyter\data\runtime set IPYTHONDIR=%conf_path%\ipython set MPLCONFIGDIR=%conf_path%\matplotlib REM Matplotlib search FFMPEG in PATH variable only! set PATH=%~dp0\apps\ffmpeg\bin;%PATH% 

, .


@echo off , .


set . %~dp0 setenv.bat . , = .


Jupyter:


  • JUPYTER_CONFIG_DIR — Jupyter ( (en) ),
  • JUPYTER_DATA_DIR — ( ( kernel ) Jupyter) ( (en) ),
  • JUPYTER_RUNTIME_DIR — Jupyter ( runtime files ) ( (en) ),
  • IPYTHONDIR — IPython ( (en) ),
  • MPLCONFIGDIR — , Matplotlib ( (en) ).

Matplotlib, FFMPEG (ru) . (en) zip FFMPEG, C:\Dev\Jupyter\dist\apps\ffmpeg .


, REM — . Matplotlib - FFMPEG %PATH% . FFMPEG %PATH , , FFMPEG, dist\apps .



Jupyter


C:\Dev\Jupyter\dist run_jupyter_notebook.bat :


 @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-notebook.exe --notebook-dir=%1 

, C:\Dev\Jupyter\dist run_jupyter_lab.bat :


 @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-lab.exe --notebook-dir=%1 

setenv.bat , .. , Jupyte Notebook Jupyter Lab , .


, D:\my-projects , Jupyter Notebook Lab. run_jupyter_notebook.bat run_jupyter_lab.bat . « ». — Jupyter !



, , . , Jupyter Notebook Lab . : !




Jupyter Notebook ( 2). . . , ( !):


 jupyter nbextension enable <nbextension require path> 

, . :


 C:\Dev\Jupyter\dist\setenv.bat C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\jupyter.exe nbextension enable <nbextension require path> 

, C:\Dev\Jupyter\dist enable_extension.bat :


 @echo off REM Enable extension in Jupyter Notebook. REM Example: REM enable_extension.bat widgetsnbextension call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-nbextension.exe enable %1 

:


 C:\Dev\Jupyter\dist\enable_extension.bat <nbextension require path> 

jupyter , C:\Dev\Jupyter\dist jupyter.bat :


 @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 

IPython .





结论


1 . Jupyter , . run_jupyter_notebook.bat run_jupyter_lab.bat , », .


2 Jupyter Notebook, Jupyter Lab Matplotlib. Jupyter Notebook Jupyter Lab, , , « ».


, , :


: https://vk.me/sindzicat


Telegram: https://t.me/sindzicat


E-mail: sh.andr.gen@yandex.ru

Source: https://habr.com/ru/post/zh-CN438934/


All Articles