gpt4 book ai didi

python - 不首先加载用户模块 (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 11:52:03 25 4
gpt4 key购买 nike

我已经在站 pip 范围内安装了 Pandas 版本 0.12.0,而用户需要 0.13.0。我告诉他将它安装到他的主目录中,他照做了,但是当他键入 import pandas 时,它找到了旧模块。

所以我决定打印出他的 sys.path 并按此顺序注意到这些路径(为保持简短而删除了其他路径):

[
'',
'/apps/python/2.7.5/lib/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg',
'/home/user/.local/lib/python2.7/site-packages',
'/apps/python/2.7.5/lib/python2.7/site-packages'

]

PYTHONPATH 也在 pandas 之后出现:

[
'',
'/apps/python/2.7.5/lib/python2.7/site-packages/pandas-0.12.0-py2.7-linux-x86_64.egg',
'/usr/lib64', // this is the PYTHONPATH
'/home/user/.local/lib/python2.7/site-packages',
'/apps/python/2.7.5/lib/python2.7/site-packages'

]

什么会导致 pandas-0.12.0 在其他任何东西之前被特别加载,甚至是 PYTHONPATH?还有其他几个包也表现出相同的行为。所有包都已通过 pippython setup.py install 安装;这两种方法都会导致这样的问题吗?我认为我们没有手动编辑任何内容。

最佳答案

一般来说,模块搜索路径文档会列出Python导入源的优先级:https://docs.python.org/2/tutorial/modules.html#the-module-search-path .据此,PYTHONPATH 紧跟在当前工作目录之后。

可以肯定的是,pip 安装包的高优先级来自站 pip 包目录中的某些 pth 文件(但是,我无法快速找出这些 pth 的优先级 文件与 PYTHONPATH 相比)。看看https://docs.python.org/2/library/site.html这解释了这些文件是如何工作的。有一个建议,应该可以解决您的问题:

This module is automatically imported during initialization. The automatic import can be suppressed using the interpreter’s -S option.

PYTHONPATH 在 -S 中存活(使用 Python 2.7.3 测试):

$ export PYTHONPATH="FOO"
$ python -S
>>> import sys
>>> "FOO" in sys.path
True

如果您还需要来自 site.py 设置的路径的包,我发现此解决方案存在问题。然而,在那种情况下,仔细调整 PYTHONPATH 仍然会有帮助。

编辑:这看起来像是 easy_install/setuptools/distribute 的一个长期存在的问题。众所周知,这些可能添加sys.path,有效地覆盖PYTHONPATH,这通常是不受欢迎的行为,请参阅https://bugs.launchpad.net/ubuntu/+source/distribute/+bug/821000 .我不确定当前的 pip 和 distribute 是否还有这个错误,也许你应该更新到这些的最新版本。

关于python - 不首先加载用户模块 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com