我在我的PYTHONPATH中的一个目录中有一个自定义模块,其名称与标准库模块的名称相同,所以当我import module_name
时,该模块被加载。如果我想使用原始标准库模块,是否有任何方法可以强制Python从标准库而不是从PYTHONPATH目录中导入,而不必重命名自定义模块并将每个引用更改为指向新名称?从Python标准库而不是PYTHONPATH强制导入模块默认
回答
理想的解决方案将是您的模块中的标准库不重命名为。
您也可以switch absolute imports on如果您对Python的2.5+:
from __future__ import absolute_import
我将如何使用相对导入来获取标准库版本? – jrdioko 2010-06-01 18:10:09
我误解了你的问题,编辑答案。 – 2010-06-01 18:19:51
这实际上不会有帮助吗? – 2011-03-18 13:41:52
您可以选择您想用imp模块导入模块:
import imp
mymodule = imp.load_module(name, file, pathname, description)
不要。
如果您不小心选择了标准库模块名称,请更改模块名称以结束冲突。
这可能是最好的解决方案,既不会在访问编码器中造成混淆,也不会导致导入已经不是相对导入的模块的行为在打开绝对导入时不会改变。 – 2011-03-18 13:44:25
要做到这一点,最好的办法是把你的项目在一个目录让我们说“MyProject的”驻留在:
/home/me/myproject
做一个符号链接的myproject目录之一默认的Python路径,例如:
# ln -s /home/me/myproject /usr/local/lib/python2.7/dist-packages/myproject
现在,当你想在你的项目中导入一个模块只需打开一个python解释器。
>>> from myproject.mymodule import *
它会像魅力一样工作。
最后一件事,不要将您的项目命名为python路径中找到的项目,因此您在导入时不会遇到问题。
更好的方法是使用'PYTHONPATH'。另外,不要使用'from x import *',因为它会使静态分析工具混淆不清,并且更难理解变量来自哪里。 – bfontaine 2017-01-14 21:33:06
- 1. 不确定如何从Python标准库导入模块
- 2. 如何默认导入python模块?
- 3. Pydev导入标准Python模块
- 4. 从Python C扩展中导入和使用标准Python模块
- 5. 导入Python模块(从另一个路径)并用作默认
- 6. 在〜/ .bashrc中使用PYTHONPATH导入Python模块不起作用
- 7. mod_wsgi python无法从标准库导入
- 8. 如何导入自定义json模块而不是python 2.7中的默认模块?
- 9. 从目录中导入模块,而不是从已安装的模块导入
- 10. PrestaShop使用默认模块,而不是主题模块
- 11. 如何在模块路径中导入标准库,而不是同名模块的
- 12. Spyder的默认模块导入列表
- 13. Python:如何检查导入的模块/包/类是否来自标准库
- 14. scrapy无法导入模块,而它在我的pythonpath
- 15. Python的Pythonpath模块安装
- 16. 强制IE7进入标准渲染模式(不是怪癖)
- 17. 导入FirebaseAnalytics模块而不是Firebase
- 18. 更改默认pythonpath
- 19. 从模块导入Python
- 20. 从Bash导入Python模块
- 21. 强制ghc导入隐藏模块
- 22. 如何为导入创建默认的python子模块
- 23. 强制iPhone显示默认图像,而不是快照
- 24. Typescript:强制默认泛型类型为'any`而不是`{}`
- 25. 如何在javac中默认强制使用StringBuffer而不是StringBuilder?
- 26. 在Python中导入分叉模块而不是已安装的模块
- 27. 在Jython中导入非标准的Python模块
- 28. '默认'是从外部模块'汇总'导入但从未使用
- 29. 导入模块基准
- 30. 如何从当前非默认目录导入模块
重命名你的模块有什么不好? – 2010-06-01 18:06:37
它只会涉及到对数十个文件进行更改。这听起来像是最好的解决方案。 – jrdioko 2010-06-01 18:46:06
你有'grep',所以不应该太难找到每一个并修复它们。 – 2010-06-01 21:15:23