【问题标题】:How to make sure python version is running correctly如何确保python版本正常运行
【发布时间】:2020-08-23 06:56:02
【问题描述】:

我对 Jupyter Notebook 比较陌生,并且一直在努力使用 Jupyter Notebook 的 python 版本。

我安装了 seaborn,但出现导入错误,提示找不到 seaborn 包。它显示在 Jupyter“Python 3”的右上角,但是当我运行 !python --version 时它返回了 Python 2.7。另外,当我运行 print(sys.path) 时,结果如下。

['', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/mysql-0.0.1-py3.5.egg', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/IPython/extensions', '/Users/Cynthia/.ipython']

我的猜测是我的 python 内核没有正确指向 python3,尽管笔记本显示它是 python3。有人可以帮我解决这个问题吗?如果可以在 Jupyter 单元中运行代码,那将会很有帮助。谢谢!

【问题讨论】:

  • 你是否在路径中添加了 python 3?检查一下。
  • 你应该看看sys.version - !python --version 可能正在启动一个不同的python。
  • python 通常是 Python2 可执行文件的名称。仅仅因为您从 Python3 内部运行此命令并不会改变这一点。检查sys.executable 以查看当前程序的可执行文件是什么。您可能也为错误的 Python 可执行文件安装了 seaborn。
  • 松散相关,当您开始使用不同的 python 版本和包版本时,我会推荐给像 conda (install conda) 这样的包管理器。还有 Anaconda,基于 GUI 的方法 (install anaconda)
  • @alaniwi 当我运行 sys.version 时,它显示 '3.5.0 (v3.5.0:374f501f4567, Sep 12 2015, 11:00:19) \n[GCC 4.2.1 (Apple Inc .build 5666) (dot 3)]'

标签: python


【解决方案1】:

当您运行python --version 时,它不会吐出python 3.5.x,因为python 指的是python2,除非您将python 别名为python3。所以当你运行python --version 时看到python 2.7.x 是有道理的。

至于py2,当你运行conda env list时,它们是你设置的环境名称。它们只是名称,而不是 python 版本。

我认为需要做的是找出您的jupyterlab 的安装位置,我认为是在(base) 环境中。在您的基础环境中,运行conda list,您将在其中看到如下列表:

(base) ➜  test conda list
# packages in environment at /Users/gwanghyeongim/.pyenv/versions/miniconda3-latest:
#
# Name                    Version                   Build  Channel
brotlipy                  0.7.0           py38haf1e3a3_1000  
ca-certificates           2020.6.24                     0  
certifi                   2020.6.20                py38_0  
cffi                      1.14.1           py38hed5b41f_0  
chardet                   3.0.4                 py38_1003  
conda                     4.8.4                    py38_0  
conda-package-handling    1.6.1            py38h1de35cc_0  
cryptography              2.9.2            py38ha12b0ac_0  
idna                      2.10                       py_0  
libcxx                    10.0.0                        1  
libedit                   3.1.20191231         h1de35cc_1  
libffi                    3.3                  hb1e8313_2  
ncurses                   6.2                  h0a44026_1  
openssl                   1.1.1g               h1de35cc_0  
pip                       20.2.2                   py38_0  
pycosat                   0.6.3            py38h1de35cc_1  
pycparser                 2.20                       py_2  
pyopenssl                 19.1.0                     py_1  
pysocks                   1.7.1                    py38_1  
python                    3.8.3                h26836e1_1  
python.app                2                       py38_10  
readline                  8.0                  h1de35cc_0  
requests                  2.24.0                     py_0  
#and so on...

查看您是否在列表中看到jupyterlab。如果是这样,您的 jupyter notebook 处于(base) 环境中。

现在最可能的情况是你在 py2 环境中安装了 seaborn。这意味着您不会在基本环境中安装 seaborn。通过运行conda install seabornpip install seaborn 安装它。

如果到目前为止还没有成功,请尝试运行 conda upgrade --all -y 以升级软件包。这可能是由于弃用包之间的冲突。

附言 我的建议是您创建一个单独的环境并在其上运行包。

  1. 运行conda create -n your_env_name 这样做(将 your_env_name 替换为您要设置的名称)

  2. 通过运行conda activate the_env_you_just_created激活

  3. 如果 2 无法正常工作,请确保运行 conda init your_shell,通过运行 echo $SHELL 可以找到 your_shell,其中 / 之后的最后一个单词是你的 shell。

  4. 确保您在命令提示符的第一部分看到(your_env_name)。如果是这样,您的环境被激活。现在在这里安装包并执行您的项目,而不是在基础环境中。

【讨论】:

  • 非常感谢!我运行 conda list,是的 jupyterlab 在我的基本列表中。但是当我运行 conda install seaborn 或 pip install seaborn 时,它显示“要求已经满足:/Users/Cynthia/anaconda3/lib/python3.6/site-packages (0.9.0) 中的 seaborn”所以现在我正在运行 conda升级 --all -y。希望这次更新后我可以导入 seaborn...
  • 它运行结束时出现错误提示“RemoveError: 'setuptools' 是 conda 的依赖项,无法从 conda 的操作环境中删除。”
  • @flyunicorn Thisthis 建议你运行 conda update conda。检查它们并考虑尝试一下。
  • 我运行 echo $SHELL,它返回 /bin/bash。接下来我运行 !conda init bash,它返回一个“没有更改也没有采取任何行动”的列表。
  • 您是否尝试过关闭和打开终端(或 Windows 的命令提示符)?
【解决方案2】:

由于您提到您使用conda,您可以执行以下操作。从您的终端:

conda create -n sb python=3
conda activate sb
conda config --env --add channels conda-forge
conda install -y pandas matplotlib numpy scipy seaborn jupyterlab # some default packages
jupyter lab

当你想再次使用这个 conda 环境时,你必须这样做

conda activate sb

在你可以运行jupyter lab之前。

注意,如果您没有更改默认值,您应该会在激活环境时看到终端提示发生变化,即环境的名称出现在您的提示之前。在我们这里是(sb) <prompt>

要解决当前 conda 环境的问题,需要更多信息。

【讨论】:

  • 通过第二行(conda activate sb),它返回:CommandNotFoundError:您的外壳没有正确配置为使用'conda activate'。要初始化你的 shell,运行 $ conda init 当前支持的 shell 是: - bash -fish - tcsh - xonsh - zsh - powershell 有关更多信息和选项,请参阅“conda init --help”。重要提示:运行“conda init”后,您可能需要关闭并重新启动 shell。
  • @flyunicorn 你试过运行conda init <your shell>吗?如果没有,请这样做。
  • 我能够运行 conda update conda 和 conda install seaborn。两者都成功运行,但是当我导入 seaborn 时,同样的错误是没有这样的模块。所以我的笔记本正在访问不同位置的包而不是通过 conda?
  • 我想我知道不匹配在哪里。在我运行 pip install seaborn 后,它返回: Requirement already compatible: seaborn in /Users/Cynthia/anaconda3/lib/python3.6/site-packages (0.9.0)....运行 sys.path 后,它显示:'/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5'。所以似乎 seaborn 保存在 python 3.5 中,而路径指向 python 3.5。如何解决?
  • @flyunicorn sys.path 不仅仅是一件事。它是一个包含路径的列表。它等于您在运行 echo $PATH 时看到的内容。如果你安装了多个python版本,它可以有多个Versions
猜你喜欢
  • 2017-01-10
  • 2015-09-14
  • 1970-01-01
  • 2014-08-12
  • 2021-08-11
  • 2016-01-31
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
相关资源
最近更新 更多