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

在切换到不同的Python二进制文件后,强制'pip'重新编译以前安装的包(numpy),python,numpy,installation,pip,virtualenv,Python,Numpy,Installation,Pip,Virtualenv,这个问题是关于我的特殊问题(我找到了一个解决方法,所以它不是一个紧迫的问题),它是关于我正在使用的一般过程 设置(工作部件): 我在Ubuntu 14.04上本地安装了Python 2.7.9,我有一个运行它的virtualenv。所有内容都与“系统”Python有很大的区别,我没有涉及到它 第一部分: 一切都开始得很好,安装了Python,所有库都在运行。例如,我还pip安装了numpy1.10.1,它编译了一段时间,然后工作得很好 问题是: 问题是,出于我无法控制的原因,我不得不在启用了

这个问题是关于我的特殊问题(我找到了一个解决方法,所以它不是一个紧迫的问题),它是关于我正在使用的一般过程


设置(工作部件): 我在Ubuntu 14.04上本地安装了Python 2.7.9,我有一个运行它的virtualenv。所有内容都与“系统”Python有很大的区别,我没有涉及到它


第一部分: 一切都开始得很好,安装了Python,所有库都在运行。例如,我还
pip
安装了numpy1.10.1,它编译了一段时间,然后工作得很好

问题是: 问题是,出于我无法控制的原因,我不得不在启用了
ucs4
的情况下重新构建python,也就是说,我使用

./configure --enable-unicode=ucs4
完成此操作后,我还卸载了所有库,并使用pip重新安装了它们。但是,似乎没有正确卸载numpy库,因为这次它立即安装了。当我尝试将
numpy
导入到我的新Python中时,我收到一条错误消息,指示numpy是使用启用了
ucs2
的Python编译的

这个假设非常可靠,因为我当时试图
pip安装numpy==1.9.3
。安装再次花费了很长时间,它生成了一个numpy版本,可以在新的启用了
ucs4
的Python上运行

现在,我的问题是: 如何让numpy卸载过程删除旧numpy的所有跟踪


编辑:

我还试图通过从我的virtualenv
网站包
目录中删除numpy来手动删除它。删除后,
import numpy
按预期返回了一个
ImportError
。然后我重新安装了它(
pip install numpy
),它返回时出现了与
ucs2
相同的错误

编辑2:

我的virtualenv 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']

另外,有一点可能很重要,那就是python的
/usr/local/lib/python2.7.9/
安装没有安装numpy。

问题可以通过pip卸载numpy(或任何其他麻烦的包),然后运行

pip install numpy --no-cache-dir
为了防止pip简单地获取缓存的安装并重复它。

您可以使用
--无二进制
--忽略已安装的
来重建包,如下所示

pip install --user --force-reinstall --ignore-installed --no-binary :all: PackageName

@我试过了,但没用。@ali\m不,检查我写的编辑。它没有工作,因为它确实卸载了numpy,但重新安装它会返回相同的错误。另外,
哪个python
打印virtualenvpython@ali_m你的假设并不能解释安装numpy 1.9.3很好。@ali\m我编辑了我的问题。不,我认为你应该自己回答这个问题(无论如何,你可以访问更多细节)。另一个建议是:您应该明确地清除pip缓存,以避免在其他已编译扩展的模块中遇到类似的问题。这通常存在于
~/.cache/pip/
中。
/tmp/
()中可能还有一个临时生成目录。
--no cache dir
没有强制重新编译,它只是让pip再次下载包
--无二进制文件:all:
强制重新编译(运行
setup.py
)。@Praveen在我的情况下,--无缓存目录也导致了重新编译(我猜是再次下载包的结果),这种行为可能因系统而异。我让pip在Ubuntu和Fedora中做了不同的事情,在virtualenv中运行时也做了不同的事情。但是,
--no cache dir
没有为我剪切它:-/
--user
在这里是多余的,因为OP使用virtualenv。关于
--force reinstall
pip help install
说:“升级时,重新安装所有软件包,即使它们已经是最新的。”我发现,
--ignore installed
会引起问题,因为它只会安装新文件,而不会更新现有文件,从而导致状态不一致<代码>--在pip 21上强制重新安装,并按预期工作