【问题标题】:How to ignore python module in ~/.local/lib/python2.7/site-packages?如何忽略 ~/.local/lib/python2.7/site-packages 中的 python 模块?
【发布时间】:2016-12-28 10:27:12
【问题描述】:

我在~/.local/lib/python2.7/site-packages 目录中有一个python 包dateutil 以及/usr/lib/python2.7/dist-packages/dateutil 中的一个。当我尝试从kalibr(一个相机校准工具,我下载了CDE)运行可执行文件时,dateutil 中的rrule.py 包在~/.local/lib/python2.7/site-packages 中抛出错误“ImportError: No module named fractions”。我可以通过删除上述 dateutil 包(它使用 /usr/lib/python2.7/dist-packages/dateutil 中的那个)来运行 kalibr,但我担心这会对其他项目产生一些影响。

所以我认为这里的基本问题是python更喜欢~/.local/lib/python2.7/site-packages中的dateutil包而不是/usr/lib/python2.7/dist-packages/dateutil中的包。

如何让 python 更喜欢后者?

(我使用的是 Ubuntu 16.04)

【问题讨论】:

  • 你试过从python控制台导入fractions吗?因为它在python库中。应该在任何地方工作。
  • 问题是我运行了一个可执行文件,它调用了一个python脚本..所以我不能使用python控制台
  • @takahashi 你的PYTHONPATH 应该是相同的,如果你的可执行文件与你启动 REPL 时的环境相同,所以不管你是否使用 REPL .我觉得很奇怪你的依赖项不能导入fractions。他们应该能够,特别是因为删除您的dateutil 的用户本地安装导致您使用标准安装,这表明您的PYTHONPATH 应该是正确的。你应该import fractions 然后help(fractions) 来查看你在 REPL 中使用的版本。

标签: python python-2.7 ubuntu python-dateutil


【解决方案1】:

我认为没有办法根据每个包选择从哪个目录加载包,但您可以更改 Python 查找包的顺序。订单反映在sys.path 中。默认包搜索路径受site-specific files影响,但主要是:

  1. 当前目录。
  2. PYTHONPATH 环境变量中列出的目录。
  3. Python 本身自带的标准库。
  4. ~/.localuser site-packages directory)下的dist-packages 目录,这是pip install --user 安装东西的地方。您可以通过设置环境变量PYTHONUSERBASE 来更改此目录的路径,并通过将PYTHONNOUSERSITE 设置为非空值来完全禁用它。
  5. /usr/local 下的dist-packages 目录,这是pip install 安装东西的地方。

所以如果需要先遍历一个目录,可以放在PYTHONPATH中。在您的情况下,您很有可能只需禁用 ~/.local 即可运行 kalibr。

env PYTHONNOUSERSITE=1 kalibr

要查看包搜索路径,请运行

python -m site

(所有这些也适用于 Python3。)

(通常,首选~/.local 下的软件包而不是/usr 下的软件包是正确的。理想情况下,软件包总是向后兼容的,如果遇到不兼容的情况,您只需在@ 下安装最新版本987654343@ 和 pip install --user。但在现实世界中,这并不总是有效。)

【讨论】:

    【解决方案2】:

    有关更改 PYTHONPATH 和默认模块搜索顺序的信息,请参阅 the answers here。您还应该检查您的脚本,看看它是否修改了PYTHONPATHsys.path

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 2017-03-25
      • 2017-09-02
      • 1970-01-01
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2022-08-08
      • 1970-01-01
      相关资源
      最近更新 更多