在 windows 沙盒中配置全新的 julia

起因

我的 VMware 虚拟机不知道怎么炸了。正好试试 windows 的沙盒。


下载


安装步骤

我会给出最后的所有文件的打包,所以步骤从略。

  1. 置顶帖中找到 julia安装包的国内分流,下载安装。
    我装的是 julia-1.0.5-win64.exe
  2. 使用国内的包注册表
    • 命令:

      ] add https://mirrors.zju.edu.cn/julia/PkgMirrors.jl.git#v1.1.0
      using PkgMirrors
      PkgMirrors.setmirror("ZJU")
      ] up
      

      如果最后一步没有更新包的注册表项建议删了 ~\.julia\registries
      然后重新 ] up 以一下,避免网络原因注册表项更新失败。

    • 1.3 左右可以用:registry add https://mirrors.ustc.edu.cn/julia/registries/General.git/

  3. 配置代理。用啥代理就跳过了。
  4. 装包。大致参考 JuliaPro 的包
    已安装的包
    ## 通用型
    BenchmarkTools # 性能测试 `@btime` 非常好用
    IJulia # 顺带就装了 conda
    ### Atom 插件配套
    Atom
    Juno
    ### debug
    Rebugger
    Debugger
    Revise
    DataFrames
    
    ## 画图
    Plots
    ### 后端
    PyPlot
    GR
    UnicodePlots
    PlotlyJS
    PGFPlots
    ### 扩展
    StatsPlots
    GraphRecipes
    ### Makie 系列
    Makie
    CairoMakie # 后端
    MakieGallery
    
    Interact
    Images
    
    ## 互操作
    RCall # 需要 R 环境
    PyCall
    
    ## 文件读写
    JSON
    JLD2
    CSV
    LightXML
    StaticArrays
    ProtoBuf
    

notes:

  • 装 conda 时建议改为 tuna 的镜像,不然太慢了。
  • 打包环境没有 GPU,如果要使用 Makie 需要 ] build GLMakieCairoMakie 作为后端时无需 GPU
  • 如果你不使用打包的 conda,那么需要自行指定 conda 以及 python 的路径,并重新 build Conda.jlPyCall.jl
    具体步骤参见各自的文档

打包信息

  1. versioninfo()

    Julia Version 1.0.5
    Commit 3af96bcefc (2019-09-09 19:06 UTC)
    Platform Info:
      OS: Windows (x86_64-w64-mingw32)
      CPU: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
      WORD_SIZE: 64
      LIBM: libopenlibm
      LLVM: libLLVM-6.0.0 (ORCJIT, broadwell)
    
  2. ] status

    status
    (v1.0) pkg> st
        Status `C:\Users\WDAGUtilityAccount\.julia\environments\v1.0\Project.toml`
      [c52e3926] Atom v0.12.9
      [6e4b80f9] BenchmarkTools v0.5.0
      [336ed68f] CSV v0.5.26
      [13f3f980] CairoMakie v0.1.2
      [a93c6f00] DataFrames v0.20.2
      [31a5f54b] Debugger v0.6.4
      [59287772] Formatting v0.4.1
      [28b8d3ca] GR v0.46.0
      [bd48cda9] GraphRecipes v0.5.1
      [7073ff75] IJulia v1.21.1
      [916415d5] Images v0.22.0
      [c601a237] Interact v0.10.3
      [033835bb] JLD2 v0.1.12
      [682c06a0] JSON v0.21.0
      [e5e0dc1b] Juno v0.8.1
      [9c8b4983] LightXML v0.8.1
      [ee78f7c6] Makie v0.9.5
      [dbd62bd0] MakieGallery v0.1.7
      [3b7a836e] PGFPlots v3.2.0
      [879c85a0] PkgMirrors v1.1.0 #fed033e (https://mirrors.zju.edu.cn/julia/PkgMirrors.jl.git)
      [f0f68f2c] PlotlyJS v0.13.1
      [91a5bcdd] Plots v0.29.1
      [3349acd9] ProtoBuf v0.8.0
      [438e738f] PyCall v1.91.3
      [d330b81b] PyPlot v2.8.2
      [6f49c342] RCall v0.13.4
      [ee283ea6] Rebugger v0.3.3
      [295af30f] Revise v2.5.4
      [90137ffa] StaticArrays v0.12.1
      [f3b207a7] StatsPlots v0.14.1
      [b8865327] UnicodePlots v1.2.0
    
  3. conda 相关

    conda 已安装包

    conda 版本为 Miniconda3-py37_4.8.2-Windows-x86_64
    配置文件位于:.julia\conda\3\condarc-julia.yml
    可以自行设置国内镜像。
    ~~清华tuna源有个小 bug: https://github.com/tuna/issues/issues/754 ~~
    (修得飞快

    (base) C:\Users\WDAGUtilityAccount>conda list
    # packages in environment at C:\Users\WDAGUtilityAccount\.julia\conda\3:
    #
    # Name                    Version                   Build  Channel
    asn1crypto                1.3.0                    py37_0
    attrs                     19.3.0                     py_0
    backcall                  0.1.0                    py37_0
    blas                      1.0                         mkl
    bleach                    3.1.0                    py37_0
    ca-certificates           2020.1.1                      0
    certifi                   2019.11.28               py37_0
    cffi                      1.14.0           py37h7a1dbc1_0
    chardet                   3.0.4                 py37_1003
    colorama                  0.4.3                      py_0
    conda                     4.8.3                    py37_0
    conda-package-handling    1.6.0            py37h62dcd97_0
    console_shortcut          0.1.1                         4
    cryptography              2.8              py37h7a1dbc1_0
    cycler                    0.10.0                   py37_0
    decorator                 4.4.2                      py_0
    defusedxml                0.6.0                      py_0
    entrypoints               0.3                      py37_0
    freetype                  2.9.1                ha9979f8_1
    icc_rt                    2019.0.0             h0cc432a_1
    icu                       58.2                 ha66f8fd_1
    idna                      2.9                        py_1
    importlib_metadata        1.5.0                    py37_0
    intel-openmp              2020.0                      166
    ipykernel                 5.1.4            py37h39e3cac_0
    ipython                   7.13.0           py37h5ca1d4c_0
    ipython_genutils          0.2.0                    py37_0
    ipywidgets                7.5.1                      py_0
    jedi                      0.16.0                   py37_0
    jinja2                    2.11.1                     py_0
    jpeg                      9b                   hb83a4c4_2
    jsonschema                3.2.0                    py37_0
    jupyter                   1.0.0                    py37_7
    jupyter_client            6.0.0                      py_0
    jupyter_console           6.1.0                      py_0
    jupyter_core              4.6.1                    py37_0
    kiwisolver                1.1.0            py37ha925a31_0
    libpng                    1.6.37               h2a8f88b_0
    libsodium                 1.0.16               h9d3ae62_0
    m2w64-gcc-libgfortran     5.3.0                         6
    m2w64-gcc-libs            5.3.0                         7
    m2w64-gcc-libs-core       5.3.0                         7
    m2w64-gmp                 6.1.0                         2
    m2w64-libwinpthread-git   5.0.0.4634.697f757               2
    markupsafe                1.1.1            py37he774522_0
    matplotlib                3.1.3                    py37_0
    matplotlib-base           3.1.3            py37h64f37c6_0
    menuinst                  1.4.16           py37he774522_0
    mistune                   0.8.4            py37he774522_0
    mkl                       2020.0                      166
    mkl-service               2.3.0            py37hb782905_0
    mkl_fft                   1.0.15           py37h14836fe_0
    mkl_random                1.1.0            py37h675688f_0
    msys2-conda-epoch         20160418                      1
    nbconvert                 5.6.1                    py37_0
    nbformat                  5.0.4                      py_0
    notebook                  6.0.3                    py37_0
    numpy                     1.18.1           py37h93ca92e_0
    numpy-base                1.18.1           py37hc3f5095_1
    openssl                   1.1.1e               he774522_0
    pandoc                    2.2.3.2                       0
    pandocfilters             1.4.2                    py37_1
    parso                     0.6.2                      py_0
    pickleshare               0.7.5                    py37_0
    pip                       20.0.2                   py37_1
    powershell_shortcut       0.0.1                         3
    prometheus_client         0.7.1                      py_0
    prompt_toolkit            3.0.3                      py_0
    pycosat                   0.6.3            py37he774522_0
    pycparser                 2.20                       py_0
    pygments                  2.6.1                      py_0
    pyopenssl                 19.1.0                   py37_0
    pyparsing                 2.4.6                      py_0
    pyqt                      5.9.2            py37h6538335_2
    pyrsistent                0.15.7           py37he774522_0
    pysocks                   1.7.1                    py37_0
    python                    3.7.6                h60c2a47_2
    python-dateutil           2.8.1                      py_0
    pywin32                   227              py37he774522_1
    pywinpty                  0.5.7                    py37_0
    pyzmq                     18.1.1           py37ha925a31_0
    qt                        5.9.7            vc14h73c81de_0
    qtconsole                 4.7.1                      py_0
    qtpy                      1.9.0                      py_0
    requests                  2.23.0                   py37_0
    ruamel_yaml               0.15.87          py37he774522_0
    send2trash                1.5.0                    py37_0
    setuptools                46.0.0                   py37_0
    sip                       4.19.8           py37h6538335_0
    six                       1.14.0                   py37_0
    sqlite                    3.31.1               he774522_0
    terminado                 0.8.3                    py37_0
    testpath                  0.4.4                      py_0
    tornado                   6.0.4            py37he774522_1
    tqdm                      4.43.0                     py_0
    traitlets                 4.3.3                    py37_0
    urllib3                   1.25.8                   py37_0
    vc                        14.1                 h0510ff6_4
    vs2015_runtime            14.16.27012          hf0eaf9b_1
    wcwidth                   0.1.8                      py_0
    webencodings              0.5.1                    py37_1
    wheel                     0.34.2                   py37_0
    widgetsnbextension        3.5.1                    py37_0
    win_inet_pton             1.1.0                    py37_0
    wincertstore              0.2                      py37_0
    winpty                    0.4.3                         4
    yaml                      0.1.7                hc54c509_2
    zeromq                    4.3.1                h33f27b4_3
    zipp                      2.2.0                      py_0
    zlib                      1.2.11               h62dcd97_3
    

其他的吐槽

  • zlib 作为二进制依赖我看了没有 10 遍也有 5 遍了,充分论证了工件的重要性。
  • 如何判断你的 julia 是卡死在下载了,还是在预编译?
    —— 使用文件监视器。
    软件名见程序标题,下图说明 julia 正在预编译 GLMakie

    如果正在下载卡住了,则能看到某个包的源代码打包,但没有对应的 hash 文件

京ICP备17009874号-2