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

首先不加载用户模块(Python),第1张

概述我在站点范围内安装了Pandas版本0.12.0,用户需要0.13.0.我告诉他将它安装到他的主目录中,但是当他输入导入的pandas时,它会找到旧的模块. 所以我决定打印出他的sys.path并按照这个顺序注意到这些路径(为了保持这个简短,删除了其他路径): [ '', '/apps/python/2.7.5/lib/python2.7/site-packages/pandas- 我在站点范围内安装了Pandas版本0.12.0,用户需要0.13.0.我告诉他将它安装到他的主目录中,但是当他输入导入的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也出现在熊猫之后:

[    '','/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?还有其他几个包也表现出相同的行为.所有包都是通过pip或者通过python setup.py install安装的;会不会导致这样的问题?我认为我们没有手动编辑任何东西.

解决方法 通常,模块搜索路径文档列出了Python的导入源的优先级: https://docs.python.org/2/tutorial/modules.html#the-module-search-path.据此,PYTHONPATH就在当前工作目录之后.

非常确定pip安装的软件包的高优先级来自site-packages目录中的某些pth文件(但是,与PYTHONPATH相比,我无法快速找到这些pth文件的优先级).看看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.pathTrue

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

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

总结

以上是内存溢出为你收集整理的首先不加载用户模块(Python)全部内容,希望文章能够帮你解决首先不加载用户模块(Python)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存