我有一个用于分析数据的python脚本。我依靠诸如numpy之类的数字处理软件包来处理我的数据。但是,软件包会不断发展,某些功能会降低,等等。这迫使我每年都要多次检查脚本,以修复错误并使它重新运行。
解决方案之一是保留较旧版本的numpy。但是,还有其他软件包需要新版本的numpy。
所以我的问题是:有没有办法1)保持安装软件包的多个版本,或者2)在我的脚本目录中拥有该软件包的本地副本,以便我可以控制要导入的内容。例如,我可以拥有自己的软件包,其中将拥有所需的所有不同软件包和版本。
稍后,我可以简单地导入所需的库
from my_package.numpy_1_15 as np115
from my_package.numpy_1_16_4 as np1164
以及稍后在我的代码中,我可以决定从哪个numpy版本使用哪个函数。例如:
index = np115.argwhere(x == 0)
这是我对问题的解决方案的愿景,我想继续使用numpy以前版本(或其他库)中的旧函数。此外,通过这种方式,我始终可以在脚本目录中随身携带所需的所有库。因此,如果我需要在另一台计算机上运行脚本,则无需花费数小时来确定一切是否兼容。
这里有可能提出的解决方案,以及为什么它们不能解决我的问题。
有很多介绍(for example),介绍了如何使用它们。但是,虚拟环境需要维护和初始设置。想象一下,如果我能拥有一个能够很好地执行特定计算任务的python代码,而与它的年份和安装在任何计算机上的软件包无关。该代码可以在不同的研究小组之间共享,并且将始终有效。
我可以创建独立的可执行文件(example)。但是,它将被编译并且无法动态更改Python的真正不错的功能