Jupyter notebook和anaconda环境bug
Jupyter notebook and anaconda environment bug
我发现 Jupyter 的一个非常奇怪的行为并让我重新安装它,但问题仍然存在。
我有一台安装了 anaconda(最新版本)的 Windows 机器。有两种环境:
- (base) 没有什么特别的可能是 seaborn pandas 等,并且在 python 版本 3.8.12.
- (tf-gpu) 包含 tensorflow-gpu 并且在 python 版本 3.9.7.
请注意,这两个环境是直接从全新安装的 anaconda 创建的,除了安装 tensorflow-gpu 之外,我没有接触任何东西。
当我通过 Anaconda 启动 Jupyter 时,它在两种环境的主文件夹“C:\User\user”上正常启动,即安装了正确的软件包和正确版本的 python。我还可以通过 Anaconda 或 Windows(始终在主目录中)启动 Powershell 实例,并启动 Jupyter,这两种环境都按预期运行(软件包,python 版本)。到目前为止一切顺利...
当我想从主目录以外的目录启动 Jupyter 时,问题就出现了。我将所有项目文件保存在一个单独的分区 (D:) 中,因此我通过 cmd/powershell(通过 Anaconda 或 Win 启动)导航到该目录并键入“jupyter notebook”。笔记本打开那个导演和:
选择基本环境后,笔记本会报告正确的名称“base”(os.environ['CONDA_DEFAULT_ENV']
) 和 python 版本 3.8.12 (sys.version_info
)。一切都像设置基本环境一样。
-
选择TF-GPU ENV时,笔记本报告报告了一个正确的名称“ TF-GPU” ,但是 i得到python版本3.8.12,完全错误!应该是3.9.7。我无法导入 tensorflow,因为出现错误。本质上,我在不知情的情况下处于基础环境中。
然后我检查启动 jupyter 的同一个 cli window (tf-gpu) 和 python --version
报告 3.9.7,当然可以导入 tf 运行 等等
Jupyter 只报告环境名称,但实际上它使用基础环境,即使它是从所述环境启动的。这怎么能改变?
为什么Jupyter从用户目录启动时可以正常运行?
如果这不容易解决,有什么解决方法? Jupyter 不识别符号链接,因此如果它不是 home 的子目录,我将无法导航到另一个目录。
最后,我也尝试通过 python -m ipykernel install --user --name tf-gpu --display-name "Tensorflow GPU (tf-gpu)"
添加 env 作为内核,但它似乎并没有改变什么。
更新 1:
当然我通过conda activate tf-gpu
激活了tf-gpu并检查了python版本和tensorflow(正确结果),问题是在启动jupyter notebook时。 notebook 报告了 tf-gpu env 但错误的 python 版本并且 tf 丢失。
更新 2:
经过一番搜索后,如果系统中安装了 python 的多个版本,jupyter notebook 似乎很难选择 python 版本(在我的例子中,每个环境环境中安装了 2、1 个).如果您认为这就是我们使用环境的原因,那就太荒谬了...
我猜你遇到这个问题的原因是因为你从 conda 基础环境启动了 jupyter notebook。您将在评论提示中看到一个(基地)。
要解决此问题,当您使用命令提示符启动时,请在启动 Jupyter notebook 之前执行 conda activate tf-gpu
,现在检查您的版本是否正确。
我所做的工作是 运行 ipython3 notebook
在启动笔记本服务器的环境中,一切正常工作正确的环境名称和正确的 python 版本和包(tensorflow 是正常工作)。这一定更新了一些配置文件,因为我现在可以 运行 来自不同文件夹的 jupyter notebook 并且 gpu-tfu env 工作正常。
请记住,只有当我在不同分区的主目录 (C:\User\user) 之外启动 jupyter 时,才会出现这些问题。另请记住,这是一个 Windows 安装,用户路径、环境等可能会发生比 linux.
更复杂的事情
我发现 Jupyter 的一个非常奇怪的行为并让我重新安装它,但问题仍然存在。
我有一台安装了 anaconda(最新版本)的 Windows 机器。有两种环境:
- (base) 没有什么特别的可能是 seaborn pandas 等,并且在 python 版本 3.8.12.
- (tf-gpu) 包含 tensorflow-gpu 并且在 python 版本 3.9.7.
请注意,这两个环境是直接从全新安装的 anaconda 创建的,除了安装 tensorflow-gpu 之外,我没有接触任何东西。
当我通过 Anaconda 启动 Jupyter 时,它在两种环境的主文件夹“C:\User\user”上正常启动,即安装了正确的软件包和正确版本的 python。我还可以通过 Anaconda 或 Windows(始终在主目录中)启动 Powershell 实例,并启动 Jupyter,这两种环境都按预期运行(软件包,python 版本)。到目前为止一切顺利...
当我想从主目录以外的目录启动 Jupyter 时,问题就出现了。我将所有项目文件保存在一个单独的分区 (D:) 中,因此我通过 cmd/powershell(通过 Anaconda 或 Win 启动)导航到该目录并键入“jupyter notebook”。笔记本打开那个导演和:
选择基本环境后,笔记本会报告正确的名称“base”(
os.environ['CONDA_DEFAULT_ENV']
) 和 python 版本 3.8.12 (sys.version_info
)。一切都像设置基本环境一样。-
选择TF-GPU ENV时,笔记本报告报告了一个正确的名称“ TF-GPU” ,但是 i得到python版本3.8.12,完全错误!应该是3.9.7。我无法导入 tensorflow,因为出现错误。本质上,我在不知情的情况下处于基础环境中。
然后我检查启动 jupyter 的同一个 cli window (tf-gpu) 和
python --version
报告 3.9.7,当然可以导入 tf 运行 等等
Jupyter 只报告环境名称,但实际上它使用基础环境,即使它是从所述环境启动的。这怎么能改变?
为什么Jupyter从用户目录启动时可以正常运行?
如果这不容易解决,有什么解决方法? Jupyter 不识别符号链接,因此如果它不是 home 的子目录,我将无法导航到另一个目录。
最后,我也尝试通过 python -m ipykernel install --user --name tf-gpu --display-name "Tensorflow GPU (tf-gpu)"
添加 env 作为内核,但它似乎并没有改变什么。
更新 1:
当然我通过conda activate tf-gpu
激活了tf-gpu并检查了python版本和tensorflow(正确结果),问题是在启动jupyter notebook时。 notebook 报告了 tf-gpu env 但错误的 python 版本并且 tf 丢失。
更新 2:
经过一番搜索后,如果系统中安装了 python 的多个版本,jupyter notebook 似乎很难选择 python 版本(在我的例子中,每个环境环境中安装了 2、1 个).如果您认为这就是我们使用环境的原因,那就太荒谬了...
我猜你遇到这个问题的原因是因为你从 conda 基础环境启动了 jupyter notebook。您将在评论提示中看到一个(基地)。
要解决此问题,当您使用命令提示符启动时,请在启动 Jupyter notebook 之前执行 conda activate tf-gpu
,现在检查您的版本是否正确。
我所做的工作是 运行 ipython3 notebook
在启动笔记本服务器的环境中,一切正常工作正确的环境名称和正确的 python 版本和包(tensorflow 是正常工作)。这一定更新了一些配置文件,因为我现在可以 运行 来自不同文件夹的 jupyter notebook 并且 gpu-tfu env 工作正常。
请记住,只有当我在不同分区的主目录 (C:\User\user) 之外启动 jupyter 时,才会出现这些问题。另请记住,这是一个 Windows 安装,用户路径、环境等可能会发生比 linux.
更复杂的事情