在切换到不同的 Python 二进制文件后强制 `pip` 重新编译先前安装的包(numpy)
Forcing `pip` to recompile a previously installed package (numpy) after switching to a different Python binary
这个问题既是关于我的特定问题(我找到了一个解决方法,所以它不是一个紧迫的问题)的问题,也是关于我正在使用的一般过程的问题。
设置(有效的部分):
我在我的 Ubuntu 14.04 上本地安装了 Python 2.7.9,并且我有一个 virtualenv,我在其中 运行 它。一切都与我不接触的“系统”Python 相距甚远。
我做的部分:
一切顺利,安装了我的 Python 和所有库 运行。比如我也pip
安装了numpy 1.10.1,编译了一段时间,就可以正常运行了。
问题:
问题是由于我无法控制的原因,我不得不重建 python 并启用 ucs4
,也就是说我使用
安装了它
./configure --enable-unicode=ucs4
这样做之后,我还卸载了所有库并使用 pip 重新安装它们。然而,似乎 numpy 库没有正确卸载,因为它这次立即安装,当我尝试将 numpy
导入我的新 Python 时,我收到一条错误消息,表明 numpy 已编译ucs2
启用 Python.
这个假设是非常可靠的,因为我当时尝试 pip install numpy==1.9.3
。安装再次花费了很长时间,它产生了一个 numpy 版本 ,适用于新的 ucs4
启用 Python.
现在,我的问题是:
How can I get the numpy uninstallation process to delete all traces of the old numpy?
编辑:
我还尝试通过从我的 virtualenv site-packages
目录中删除它来手动删除 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 简单地获取缓存安装并重复它。
您可以使用 --no-binary
和 --ignore-installed
重建一个包,如下所示
pip install --user --force-reinstall --ignore-installed --no-binary :all: PackageName
这个问题既是关于我的特定问题(我找到了一个解决方法,所以它不是一个紧迫的问题)的问题,也是关于我正在使用的一般过程的问题。
设置(有效的部分):
我在我的 Ubuntu 14.04 上本地安装了 Python 2.7.9,并且我有一个 virtualenv,我在其中 运行 它。一切都与我不接触的“系统”Python 相距甚远。
我做的部分:
一切顺利,安装了我的 Python 和所有库 运行。比如我也pip
安装了numpy 1.10.1,编译了一段时间,就可以正常运行了。
问题:
问题是由于我无法控制的原因,我不得不重建 python 并启用 ucs4
,也就是说我使用
./configure --enable-unicode=ucs4
这样做之后,我还卸载了所有库并使用 pip 重新安装它们。然而,似乎 numpy 库没有正确卸载,因为它这次立即安装,当我尝试将 numpy
导入我的新 Python 时,我收到一条错误消息,表明 numpy 已编译ucs2
启用 Python.
这个假设是非常可靠的,因为我当时尝试 pip install numpy==1.9.3
。安装再次花费了很长时间,它产生了一个 numpy 版本 ,适用于新的 ucs4
启用 Python.
现在,我的问题是:
How can I get the numpy uninstallation process to delete all traces of the old numpy?
编辑:
我还尝试通过从我的 virtualenv site-packages
目录中删除它来手动删除 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 简单地获取缓存安装并重复它。
您可以使用 --no-binary
和 --ignore-installed
重建一个包,如下所示
pip install --user --force-reinstall --ignore-installed --no-binary :all: PackageName