python - 外部python出现在anaconda环境中
问题描述
我正在尝试按照这个简单的教程在 anaconda 中添加不同版本的 python。我执行以下操作:
benjamins-mbp:ben ~ % conda create -n py36 python=3.6 anaconda
benjamins-mbp:ben ~ % conda activate py36
(py36) benjamins-mbp:ben ~ % python --version
>>> Python 3.8.2
我希望Python 3.6.10
但是,当我在环境中打开 Jupyter 笔记本py36
并检查 python 时,版本是正确的:
from platform import python_version
print(python_version())
>>> 3.6.10
我想这是因为我在.zshrc
?
# Set alias for python3.8
alias python='python3.8'
(py36) benjamins-mbp:ben ~ % which python
给我python: aliased to python3.8
为什么我可以python3.8
从py36
没有安装它的地方访问?我该如何解决这个问题,以便我的虚拟环境引用它的本机 python?
解决方案
你实际上回答了你自己的问题。Shell 倾向于在执行任何其他操作之前扩展别名。这就是别名的全部意义。
通常,程序在您的系统上只有一个版本,因此不太可能alias ls='ls -al'
或alias rm='rm -i'
会让您绊倒。Python 在这方面很特别,因为它有效地鼓励在虚拟环境中在您的系统上安装多个版本(更不用说同一版本的多个副本)。
虚拟环境是通过环境变量配置的,例如PATH
. 这些不适用于别名。解决方案是永远不要给 python 起别名。如果您需要将其命名为其他名称,请将其作为PATH
您想要的虚拟环境中的符号链接。
这不适用于 python 的系统安装。最有可能的是,您的脚本期望将特定版本符号链接为/usr/bin/python
. 此时,您的虚拟环境应该取代对别名的需求。
推荐阅读
- sql - SQL 开发人员 - 当存在 2 个电话号码列时查找不同的电话号码
- asp.net - Asp.Net 身份更新与注销混淆
- javascript - 无法使用 JavaScript 从 Select 中获取选项值
- sql - 我无法使用 SQL Developer 连接到 Oracle 服务器
- makefile - 使用单个 CMakelist 中的许多源文件编译(通过 CMakelist)main.cpp
- javascript - Electron JS App 仍然有默认图标(使用 electron-windows-store 构建的 .appx 文件)
- java - 如何使用 lombok SuperBuilder 访问超类的私有变量
- javascript - 使用 Canvas 进行绘制和缩放:Canvas 删除先前绘制的形状
- c - 排序数组中缺少数字
- javascript - 在JS中拆分字符串并更改值