我在 D:\Python27 下安装了 Python,并在其中安装了 matplotlib,而 matplotlib 又依赖 backports.functools_lru_cache,所以在 D:\Python27\Lib\site-packages 目录下有 backports 包
然后我又用 virtualenv --system-site-packages venv 在 D:\Python27\venv 目录下生成了一个虚拟环境,然后在此虚拟环境下安装了 jupyter,而 jupyter 又依赖 backports.shutil_get_terminal_size,所以在 D:\Python27\venv\Lib\site-packages 目录下也有 backports 包
而且这两个 backports 包的内容又不一样,,
装完之后我启动 D:\Python27\venv 下的 iPython 结果它告诉我在 import matplotlib 时发生 from backports.functools_lru_cache import lru_cache 错误,,backports 下没有 functools_lru_cache
我猜测两个地方同时有 backports 包时,虚拟环境优先导入虚拟环境下的 backports,虚拟环境下的 backports 确实没有 functools_lru_cache
所以我就想在虚拟环境下用 pip install backports.functools_lru_cache 也安装 functools_lru_cache,,可是 pip 告诉我已经有 functools_lru_cache 了,,不让装,,我猜测是因为 pip 检测到了主环境下已经安装了 backports.functools_lru_cache,所以就不让我在虚拟环境下安装了
我又想了两种可能的办法:
1、把主环境下的 backports.functools_lru_cache 给卸载了,,在虚拟环境下安装,,可这样的话就只能在虚拟环境下才能使用 matplotlib 库了,,这肯定不行
2、安装虚拟环境时去掉--system-site-packages,,可这样的话虚拟环境和主环境下就得各安装一个 matplotlib 才能两个环境都有 matplotlib 用,,
我觉得出现这种状况的主要原因是,backports.functools_lru_cache 和 backports.shutil_get_terminal_size 这两个包明明不一样,,安装后的包名却都叫 backports,,其实在这种情况下,如果虚拟环境下的 backports 包下找不到 functools_lru_cache,,python 能主动再去主环境的 backports 包下去找一下也行,,
所以,,现在卡死了,,请问有没有遇到类似问题的??对这种情况官方有没有什么解决办法??
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.