代码改变世界

包及跨模块导入

2018-07-24 20:01  冻奶香甜玉米片  阅读(219)  评论(0)    收藏  举报

包:其实就是一个包含__init__和多个模块的文件夹

py2中不包含__init__不能用from **(包) improt (模块)的方法导入

py3中做了优化,则可以

 

跨模块导入

  text可以from pro2 import say_hello 

在say_hello页面 不可以from proo import mymodule 

这样做会报错:ModuleNotFoundError: No module named 'proo'

但是text可以from pro2 import say_hello  然后间接运行 say_hello中 import 的mymodule模块,

因为在环境变量中text是在最上面的(可以理解为 from proo import mymodule 在text中可以运行,因为text和proo是平级的目录(等于把say_hello中的improt mymodule导进来运行而已)

在text.py上,该文件就是所谓的总入口程序!!以其为总程序,调用的module路径为其平级目录

 

 

os找绝对路径

os.path.abspath(__file__)

然后再用dirname函数(把路径往上翻一层)

os.path.dirname(os.path.abspath(__file__))

再加入到sys.path.append()中就可以了软件就会也在这里找文件(添加到python全局的环境变量里(猜一般都是在环境变量里找,就像在cmd中找python一样))