tak*_*shi 3 python ubuntu python-2.7 python-dateutil
我dateutil
在~/.local/lib/python2.7/site-packages
目录中有一个 python 包,在/usr/lib/python2.7/dist-packages/dateutil
. 当我尝试从kalibr(一种相机校准工具,我下载了 CDE)运行可执行文件时,rrule.py
从dateutil
包中~/.local/lib/python2.7/site-packages
抛出错误“ImportError: No module named fractions”。通过删除所述dateutil
包(它使用 中的包),我可以让 kalibr 运行,/usr/lib/python2.7/dist-packages/dateutil
但我担心这会对其他项目产生一些影响。
所以我想,基本的问题就在这里是蟒蛇喜欢的dateutil
包~/.local/lib/python2.7/site-packages
过那个在/usr/lib/python2.7/dist-packages/dateutil
。
我怎样才能让python更喜欢后者?
(我使用的是 Ubuntu 16.04)
我不认为有一种方法可以在每个包的基础上选择从哪个目录加载包,但是您可以更改 Python 查找包的顺序。顺序反映在 中sys.path
。默认包搜索路径受站点特定文件的影响,但主要是:
PYTHONPATH
环境变量中列出的目录。dist-packages
目录下~/.local
(在用户站点包目录),这是在pip install --user
安装的东西。您可以通过设置环境变量来更改此目录的路径,PYTHONUSERBASE
并通过设置PYTHONNOUSERSITE
为非空值来完全禁用它。dist-packages
目录/usr/local
,这是pip install
安装东西的地方。所以如果需要先遍历一个目录,可以把它放在PYTHONPATH
. 在您的情况下,您很有可能只是禁用~/.local
运行 kalibr。
env PYTHONNOUSERSITE=1 kalibr
Run Code Online (Sandbox Code Playgroud)
要查看包搜索路径,请运行
python -m site
Run Code Online (Sandbox Code Playgroud)
(所有这些也适用于 Python3。)
(通常,更喜欢下面~/.local
的包/usr
而不是下面的包是正确的。理想情况下,包总是向后兼容的,如果你遇到不兼容的问题,你只需在~/.local
with下安装最新版本pip install --user
。但在现实世界中,这不会并不总是有效。)