如何“强制”python使用模块的特定版本?

2024-04-26 00:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不熟悉,所以如果在其他地方用我没想到的标签回答这个问题,我很抱歉。

我正在尝试将numpy从现在的1.6版本更新到1.8。我已经在我的python站点包中安装了numpy,当我调用numpy时,它调用旧的1.6版本。我试着寻找1.6版本的根,这样我就可以删除它,但是这会导致:

import numpy
print numpy.__version__
print numpy.__file__
>>>
1.6.2
V:\Brian.140\Python.2.7.3\lib\site-packages\numpy\__init__.pyc

我已使用以下命令将包含模块的文件夹添加到系统路径:

sys.path.append('C:/Python27/Lib/site-packages')

我知道这是可行的,因为我可以在这个位置调用其他模块,没有错误,例如:

import wx
import Bio

以及

import nose

不会产生错误。为什么会发生这种情况,我如何告诉python要使用哪个版本的numpy?


Tags: 模块import版本numpy站点initversionlib
3条回答

这是一个非常混乱的解决方案,可能不应该鼓励,但我发现,如果我从系统路径中删除旧版本numpy的位置,我可以调用我想要的版本。具体内容如下:

import sys
sys.path.append('C:/Python27/Lib/site-packages')
sys.path.remove('V:\\\Brian.140\\\Python.2.7.3\\\Lib\\\site-packages')
import numpy

Force python to use an older version of module (than what I have installed now)提到了一个通用的解决方案:

import pkg_resources
pkg_resources.require("numpy==`1.16.2")  # modified to use specific numpy
import numpy

也可以将目录插入到路径的开头,这样就不需要删除旧目录:

sys.path.insert(1, 'C:/Python27/Lib/site-packages')

如果你已经导入了你的模块,那就行不通了。您可以在sys.path.insert命令之后导入它,也可以使用importlib.reload(module\u name

相关问题 更多 >