注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Mihooke's blog

IT之恋

 
 
 

日志

 
 

Python包的导入在IDE和命令行的区别  

2018-03-01 22:54:26|  分类: Python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先说一下,Python导入包是从PYTHONPATH,即sys.path中查找路径的。Python项目在IDE(比如PyCharm)中,IDE会默认把当前项目的路径加入到sys.path中,sys.path是一个list,里面包含了环境变量。
下面是一个名为myproject的python工程,结构如图所示:
Python包的导入在IDE和命令行的区别 - mihooke - Mihookes blog
 subpack1和subpack2是2个包,因为它们的目录下都有一个名为__init__.py文件,现在要在goo.py文件中使用foo.py文件中的函数,应该怎么导入呢?
  • IDE做法

goo.py


from subpack1 import foo

if __name__ == "__main__":
pass

因为IDE已经将mypackage所在的目录加入到PYTHONPATH中了,所以subpack1可以直接找到。但是在命令行直接运行goo.py会报错:
Python包的导入在IDE和命令行的区别 - mihooke - Mihookes blog
  •  命令行做法
由于python是从sys.path中寻找路径,所以我们可以把当前路径添加到sys.path中

goo.py


import sys
my_dir = "E:\\ChangShiCase\\python\\mypackage"
sys.path.append(my_dir)
print(sys.path)

from subpack1 import foo

if __name__ == "__main__":
pass

再次运行,不会有错误了。
但是这种做法值得注意,在小项目中或文件依赖较少的情况下是值得推荐的,但是在大项目中,会造成python的环境变量变得很大,造成编译效率慢。
  评论这张
 
阅读(10)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018