升级python软件包时是否有必要停止所有python脚本?

时间:2018-12-27 01:44:30

标签: python python-3.x anaconda conda

如果使用软件包X的python脚本正在运行并且软件包X正在升级,是否会导致权限问题,从而导致升级失败?

我正在使用Windows 10,在python v3.6上运行的Anaconda v5.2和conda进行软件包更新。

3 个答案:

答案 0 :(得分:2)

我会回答我自己的问题。

我刚刚尝试了一个简单的测试。我运行了一个永远循环的python脚本。它使用numpy。然后,我尝试安装需要降级numpy版本的python软件包(pytorch)。当脚本运行时,安装失败,并显示一些“没有权限”错误消息。停止脚本后,安装成功。

根据此实验的结果,得出的结论是,建议在执行python软件包升级时停止所有python脚本。

答案 1 :(得分:1)

尽管纯Python文件在导入时会在内存中编译,并且在此之后(几乎)不再与源相关,但这还不是故事的结尾。

程序包可能具有延迟加载的额外资产,或者您的程序或其依赖项可能会按需加载相关模块,因此,如果在升级过程中运行,则可能会加载程序包/资源的意外版本,甚至是中途升级的程序包

此外,本机(=仅限非Python)模块-Windows上的.pyd文件-是在导入过程中加载的dll。由于dll被映射到内存中且没有共享,因此不允许在加载dll时对其进行替换,因此这可能会阻止相关软件包的升级。

答案 2 :(得分:0)

modprobe fuse时,您正在RAM中创建要运行的包的本地实例。因此,升级软件包不应影响脚本的运行。
您可以查看import在脚本仍在运行时重新加载软件包