我现在有一个经过多年进化的a rather complex Python configuration,我想清理它并使它“现代化”。
现有的配置具有默认的macOS Python,而Homebrew的Python3和Python2都是并排存在的,还有它们相关的Pip。我还有一些python命令行工具,这些Pythons或它们相关的安装包已经创建,并且我或多或少地经常使用这些工具。
我想做的是:
mkvirtualenv访问virtualenvwrapper (作为创建环境的替代方案)我不知道如何在不产生问题的情况下做到这一点,并想确认显而易见的事情是安全的:
pip安装mkvirtualenv、virtualenvwrapper和木星(以及我随后需要的任何其他工具)这是正确的程序吗?是否存在我应该使用的命令的特定形式,或者我应该为它们选择的选项?
发布于 2019-04-03 20:26:21
最大和/或第一个问题是如何不破坏依赖Python的现有功能。这里有两大阵营:
1)硬编码Python可执行文件位置的工具和其他脚本,以及
2)依赖/a系统路径变量的工具和其他脚本。
#1是比较容易的。如果您不打算删除任何Python版本,那么在all...these中这些工作将不会继续工作。如果您确实想卸载一些Python版本,那么您必须将依赖于要删除的那些版本的任何工具切换到对该工具也有效的另一个版本。问题中的道路通常是在一声“#!”( xxx')行位于每个主要Python二进制文件的顶部,但是还有其他方法可以形成Python二进制文件的路径。总之,为什么要卸载任何东西?磁盘空间很便宜。也许只是确保这些不想要的版本没有被任何路径变量引用。
#2是最难的。当您只在主帐户的命令提示符下键入" Python“时,这个类别中的所有工具都不一定使用python的版本。可以有其他操作模式以不同的方式初始化执行环境(路径变量),因此可能运行不同的Python版本,尽管取决于PATH的值。
#2的一部分担心的不仅仅是"python“引用,还包括"python2”、"python3“以及其他可能的变体。
只有在您有了解决上述问题的计划之后,您才会担心可能会摆脱Python版本并安装新的版本。希望Brew在卸载它所安装的版本方面做得很好,所以如果您可以删除其中一个或多个版本上的依赖项,那么它们可能很容易被删除。如果您有自安装的Python版本,那么通过删除路径变量中对它们的引用(或者不.如果您遗漏了一些)并删除安装目录,这些版本也应该很容易卸载。
然后添加Python的新版本。这只会影响上面的#2。您必须考虑这个问题,并知道如果新安装操作任何路径变量,会产生什么影响。如果它只操作您自己的用户路径,或者让您自己操作,这是一个更容易理解的任务,但是对环境的任何更改都是破坏现有功能的机会。
最后,还有为新开发选择不同Python版本的机制,包括使用虚拟env。这可能是最简单的部分,因为你可以做研究,尝试,和测试,你可以做任何你想做的事。问题的这一部分是最好的界限。
我对木星一无所知,只是模糊地知道它是什么,所以我不知道这是如何使这一切复杂化的。
最新情况:最后说明。正如您可能已经知道的,Python在每个版本中都很好地隔离了自己,保持了其独特的标识。如果您使用右边的'pip‘和'easy_install’,它们就在您将要运行的'python‘二进制文件旁边,您应该会清楚地影响到这个环境。我不知道所有Python版本都这么容易,但我从未见过我使用过的Python版本打破了这个约定。当然,这里的复杂之处在于,当通过路径变量发现这些工具时,您在不同的情况下得到了它们的哪个版本。
发布于 2019-04-03 20:40:02
首先,安装anaconda或miniconda。该安装是无损的,并且与其他Python安装没有冲突。在考虑删除已安装的自制Pythons之前,请检查它是否有效。
conda命令既用作包管理器,也用作环境管理器。您无法避免创建conda环境:默认安装已经是名为base的环境的一部分。我也不知道你为什么要这么做。
您可以使用pip将您选择的任何包安装到conda环境中,但是由于您可以对任何conda通道上可用的任何包使用conda install (例如“默认”、“conda”),所以使用pip通常是多余的。
您可以使用非conda虚拟环境,但同样需要:为什么?conda create -n foo python=x.x jupyter #etc和conda activate foo是启动和运行一个虚拟环境所需要的全部。
https://stackoverflow.com/questions/55502980
复制相似问题