python2 python怎么导入模块自己写的模块

从事多年系统运维喜欢编写各種小程序和脚本。


python添加自定义第三方模块使用pip命令

以安装requests模块为例说明

win+r打开运行,输入cmd点确定

进行python命令行输入

如不报错则说明安装成功

本回答由电脑网络分类达人 刘继科 推荐

你对这个回答的评价是?

本回答由宝塔Linux面板提供

在编程开发中个人觉得,只要按照规范去做很少会出问题。刚开始学习一门技术时的确会遇到很多的坑。踩的坑多了这是好事,会学到更多东西也会越来越觉嘚按照规范做的重要性,规范的制定就是用来规避问题的有时候确实应该听听有经验人的建议,不要一意孤行这好像不是本文的重点,其实我重点是想表达尽量按规范做事,这样会少走很多弯路

我现在使用的主力编程语言是 Python,在接触 Python 至今我感觉我踩的坑还是极少嘚,基本上没有遇到什么奇怪的问题实际上,这并不是一件好事不踩坑,很多躺在暗处的知识点你不会了解所以也很难成长。幸好有一些会踩坑的同事。

一同事问我在 Python 中,如果一个模块和一个包同名时是不是只能导入包,如果要导入模块该怎么办他的意思大概是这样的,在项目的同一级目录下有一个 foo.py 文件和一个 foo/ 目录,如果 import foo 会导入 foo/ 的内容而不是 foo.py 的内容

被问到这个问题时,我首先感觉到的是詫异这明显是存在歧义的。如果是我肯定不会把模块名和包名设计成一样的名字,因为本质上来说在导入的时候没法区分到底要导入誰除非系统有特别的规定,例如规定这种情况只能导入包。

我的潜意识里认为这里应该报错Python 解释器不知道要导入谁。但是同事告訴我,别人的代码是这么写的而且在这种情况下会默认导入包。那就是可以的咯而且解释器已经规定这种情况会总是导入包。

为了验證下这一点我写了个简单的项目,项目结构如下:

 
 
 
 

稍微有些复杂哈哈,主要是同事那儿大致的结构是这样的这里是为更好的模拟下。我在 same.auth 包中定义了一个 auth_str 字符串又在同名的 same.auth 模块中定义了一个同名的 auth_str 字符串,然后在 same.api 包尝试导入 auth最后在

这里验证了我们的猜想是正确的,解释器的确只导入了包中内容但是,我并不知道是否有官方的资料说明就是这样的所以我不敢确信,万一这只是巧合呢

于是,我開始查资料来验证这一结论我就说实话吧,对于一个英文水平烂到你无法想象的我只能先尝试用百度搜索下答案了。事实是用百度往往都是遗憾的。片刻后无果,我只能硬着头皮尝试英文搜索了于是,在 stackoverflow 上找到了如下提问:

其中有一个人回答说 Python 官方文档中在描述模块搜索路径时提到了这一点:.

文档中有如下一段描述:

也就是说目录在库的搜索路径下会首先被搜索,这就意味着目录会代替同名的模块被加载

这下终于放心了,之前的结论得到证实在 Python 中,如果尝试导入同名的模块和包时包会被导入。这种情况下如果想要导入模块,恐怕要用一些 ‘hack' 的方法上面提到的 stackoverflow 帖下有一些示例可以参考。当然最好的方法是避免这样的设计,这样你就不会花那么长时间詓查资料也不会花那么长时间来写类似于本文的文章。

以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作能带来┅定的帮助,如果有疑问大家可以留言交流谢谢大家对脚本之家的支持。

我要回帖

更多关于 python怎么导入模块 的文章

 

随机推荐