【问题标题】:How to make Jupyter Notebook look in the right place for a module?如何让 Jupyter Notebook 出现在模块的正确位置?
【发布时间】:2021-07-23 22:16:26
【问题描述】:

使用运行 python2 内核的 Jupyter Notebook,我尝试导入 emcee 并收到错误消息:

File "/home/me/.local/lib/python2.7/site-packages/emcee/ensemble.py", line 84
    parameter_names: Optional[Union[Dict[str, int], List[str]]] = None,
                   ^
SyntaxError: invalid syntax

显然是因为我使用的是 python2 内核。

然后我安装了 ipykernal 使用:python3 -m pip install ipykernel

然后我使用 Python3 内核打开了一个 Jupyter Notebook。我再次尝试import emcee,但我遇到了同样的问题。它仍在 python2 路径中寻找emcee 模块。

然后我做了pip3 install emcee,打开了一个 Jupyter Notebook(python3 内核),但我仍然遇到同样的问题。

我想我需要告诉 Jupyter Notebook 寻找 emcee 的 python3 版本,但我不知道该怎么做。我刚试过:

export PYTHONPATH='/home/me/.local/lib/python3.6/site-packages/'

但同样,这并没有解决问题。我在 Jupyter Notebook 中检查了sys.path,似乎没有添加新的 python 路径。

谁能告诉我我做错了什么?

【问题讨论】:

  • 你的电脑里有python3,对吧?
  • 是的,我确实安装了 python 3 :)

标签: python-3.x jupyter-notebook ubuntu-18.04


【解决方案1】:

这里的问题不是你这边的,这个问题主要是那边的。他们,那里指的是emcee
说明:
他们基本上是在使用annotationhere,而你正在使用python2导入这个不支持annotation的库。

这里有一点关于注解的信息(一些stackoverflow问题)。

primes: List[int] = []stats: Dict[str, int] = {}:= 之间的所有内容都是类型提示,因此primes 确实定义为List[int],并且最初设置为一个空列表(而stats 最初是一个空字典,定义为Dict[str, int] )。

这是一个函数注解;函数参数和返回值可以用任意 Python 表达式标记。 Python 本身会忽略注释(除了保存),但第三方工具可以使用它们。

您不能直接在 2.7 中使用新的 (3.5+) 注释语法,但如果您有 python 3.4+,您可以安装 mypy 并使用不同的语法在您的 2.7 代码上运行它。见PEP 484

现在如果 jupyter notebook 没有使用 python3 那么解决方案是create virtual environment 并尝试在那里运行。您可以在new issue 中添加您的问题,它们会有所帮助,但如果您知道自己在做什么,那么您也可以更改该代码。如果您编辑的代码适用于 python2 和 3,那么您可以pull request

【讨论】:

    【解决方案2】:

    Jupyter Notebook 并没有真正使用 python3 内核,尽管它说它是:

    我的 python3 内核位于:/home/damejia/.local/share/jupyter/kernels/python3

    kernel.json 文件是:

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

    但是“python”只是指向我的python2。我将“python”更改为“python3”,一切正常。

    【讨论】:

      猜你喜欢
      • 2022-06-16
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 2020-08-30
      相关资源
      最近更新 更多