我正在寻找同时维护不同python安装(或环境)的最佳实践,特别是在实现以下3个目标/要求方面:
注意:我正在使用Anaconda安装Python
要求1 - Jupyter笔记本便利性
所有python解释器(在不同的安装或环境中)应该在内核列表中的jupyter notebook中可用。
要求2 - 命令行便利性
在命令行上,应该很容易指定我的机器上可用的任何python解释器来运行py脚本,例如:' py2 test.py'或者' py3_env1 test.py'
要求3 - 自动化便利性
使用* .bat文件运行py脚本,使用机器上提供的任何python解释器。
如上所述,这里有两个广泛的选择:
Choice1 - 单一安装,多种环境
...即。保持单身' python安装文件夹,但使用' conda'。
在其中创建多个环境Choice2 - 多个安装,每个单一环境
...即在仅具有根环境的单独安装文件夹中维护不同的python解释器。
如果我做出上述两个选项中的任何一个,我可以满足一些但不是全部3个要求。
例如,如果我使 Choice1 ,我可以很容易地满足 Requirement1 ,但不能满足2和3;并且使用 Choice2 ,我只能满足 Requirement2 和 Requirement3 。详情如下。
满足要求1 - Jupyter笔记本便利性
如果我进行 Choice1 (单个安装,多个环境),我可以使用发布的here解决方案来满足 Requirement1 。它建议在所有环境中注册ipykernel。
使用 Choice2 ,jupyter笔记本是否可以看到所有内核分布在许多python安装中?我无法让它发挥作用。
满足要求2 - 命令行便利性
如果我使用 Choice2 ,那么我可以使用 Python Launcher 或按照建议创建符号链接来满足 Requirement2 here
使用 Choice1 ,由于 Python Launcher 无法识别不同的环境(但是!),因此无法正常工作。那么,还有其他方法可以实现吗?我可以说,我可以使用某种命令别名,比如捷径命令' py'指的是根环境' python.exe 文件,另一个文件' py2'指的是另一个环境的 python.exe 。如果我这样做,将致电' py2'在它将调用正确的 site-packages 文件夹的意义上是健壮的吗? (注意,我们尚未在此处激活环境,因此Windows' PATH'可能无法指向正确的文件夹)。我认为激活环境是必要的,但我不确定。
满足要求3 - 自动化便利性
如果我使用 Choice2 ,我也可以使用 Python Launcher 来满足 Requirement3 (就像上面一样)。另外,更不用说,我的脚本也可以使用 shebang operator 来提及它想要调用哪个python。但是,我不想在脚本中对python版本进行硬编码,并保持命令本身的灵活性。
如果我做 Choice1 ,我认为像下面的* .bat文件可以工作: conda激活py3_env1 python test.py 停用
所以,我打算首先激活环境,然后调用py文件。但是,这不起作用。调用此bat文件只执行第一行,激活环境,然后没有任何反应。
所以,简而言之,我希望有一个一致的设置,允许我从所有媒体调用不同的python版本 - 笔记本,命令提示符和自动蝙蝠文件 - 非常方便。
非常感谢有关最佳做法的任何指导或建议。