在切换到不同的Python二进制文件后,强制`pip`重新编译先前安装的软件包(numpy)。

6 浏览
0 Comments

在切换到不同的Python二进制文件后,强制`pip`重新编译先前安装的软件包(numpy)。

这个问题不仅仅是关于我的具体问题(我已经找到了一个解决办法,所以不是一个紧急问题),也是关于我正在使用的一般过程的问题。

安装设置(已解决的部分):

我在我的Ubuntu 14.04上本地安装了Python 2.7.9,并在其中运行一个虚拟环境。一切都与我没有接触的“系统”Python完全分离。

我所做的部分:

一切开始得很顺利,我的Python安装并且所有的库都能运行。例如,我还使用pip安装了numpy 1.10.1,它编译了一段时间,然后运行得很好。

问题:

问题是,由于我无法控制的原因,我不得不使用启用了ucs4的python重新构建它,也就是通过以下方式安装它:

./configure --enable-unicode=ucs4

在进行了这个操作之后,我也卸载了所有的库,并使用pip重新安装了它们。然而,似乎numpy库没有被正确地卸载,因为这一次它安装得非常快,当我尝试在我的新Python中导入numpy时,我得到了一个错误消息,指示numpy是使用启用了ucs2的Python编译的。

这个假设相当可靠,因为我随后尝试pip install numpy==1.9.3。安装再次花了很长时间,生成了一个在新的启用了ucs4的Python上工作的numpy版本。

现在,我的问题是:

如何让numpy的卸载过程删除所有旧numpy的痕迹?

编辑:

我还尝试通过从我的虚拟环境的site-packages目录中删除它来手动删除numpy。删除后,导入numpy预料中会返回一个ImportError错误。然后我重新安装它(pip install numpy),它又返回了相同的与ucs2相关的错误。

编辑2:

我的虚拟环境Python所看到的完整sys.path是:

['',

'/home/jkralj/.virtualenvs/work/lib/python27.zip',

'/home/jkralj/.virtualenvs/work/lib/python2.7',

'/home/jkralj/.virtualenvs/work/lib/python2.7/plat-linux2',

'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-tk',

'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-old',

'/home/jkralj/.virtualenvs/work/lib/python2.7/lib-dynload',

'/usr/local/lib/python2.7.9/lib/python2.7',

'/usr/local/lib/python2.7.9/lib/python2.7/plat-linux2',

'/usr/local/lib/python2.7.9/lib/python2.7/lib-tk',

'/home/jkralj/.virtualenvs/work/lib/python2.7/site-packages']

另外,可能需要提到的是,/usr/local/lib/python2.7.9/的Python安装没有安装numpy。

0