[ python import module ] 導入模塊

import  moudle_name   ---->  import module_name.py   ---> import  module_name.py文件路徑   ----->  sys.path (這裏進行查找文件)python

# from app.web import Person

import app.web.Person as Person

#至關於把 Person.py 模塊內容賦給了 Person 了

 

import  優先級高於 from   module  import  xxweb

規則:app

若是多個包,儘可能使用 from module import xx  或者  import   module  as xx函數

 

 

 

1.第一步sys.path 查看系統查找的路徑集合;spa

2.包   包下面有多個module 文件,和 __init__.py 文件.net

3.模塊  import  packageA.module  命令行

4.模塊裏面的方法,類,屬性等code

 

 

 

python3  自定義模塊三種方式導入blog

(轉載地址:https://blog.csdn.net/pwc1996/article/details/52577148)utf-8

第一種,直接 import

這裏有個大前提,就是你的py執行文件和模塊同屬於同個目錄(父級目錄),以下圖:

  • main.py 和 pwcong模塊同在python目錄
  • 執行文件爲main.py
  • pwcong文件夾爲一個模塊

我把pwcong模塊提供的函數寫在 __init__.py 裏,裏面只提供一個 hi 函數:

# pwcong 模塊的 __init__.py
# -*- coding: utf-8 -*-

def hi():
    print("hi")

執行文件main.py直接import模塊:

# main.py
# -*- coding: utf-8 -*-

import pwcong

pwcong.hi()

接着咱們運行一下main.py能夠看到命令行窗口輸出了一句 hi ,第一種方式完成。

使用模塊方式爲:先導入--->接着輸入模塊.變量|函數, 如上面例子的 pwcong.hi()

第二種,經過sys模塊導入自定義模塊的path

若是執行文件和模塊不在同一目錄,這時候直接import是找不到自定義模塊的。以下圖:

  • 執行文件main.py在main目錄下
  • pwcong模塊在python目錄下

sys模塊是python內置的,所以咱們導入自定義模塊的步驟以下:

  1. 先導入sys模塊

  2. 而後經過sys.path.append(path) 函數來導入自定義模塊所在的目錄

  3. 導入自定義模塊。

這時候 main.py 這樣寫:

# main.py
# -*- coding: utf-8 -*-

import sys
sys.path.append(r"C:\Users\Pwcong\Desktop\python")

import pwcong

pwcong.hi()

最後執行main.py文件,最終輸出 hi ,第二種方式完成。

第三種,經過pth文件找到自定義模塊

這個方法原理就是利用了系統變量,python會掃描path變量的路徑來導入模塊,能夠在系統path裏面添加。可是我仍是推薦使用pth文件添加。

模塊和執行文件目錄結構跟上圖同樣:

  • 執行文件main.py在main目錄下
  • pwcong模塊在python目錄下

咱們建立一個 module_pwcong.pth 文件,裏面內容就是 pwcong模塊所在的目錄:

C:\Users\Pwcong\Desktop\python

將該 module_pwcong.pth 文件放到這裏:  python安裝目錄\Python35\Lib\site-packages

例如個人: 

而後 main.py 導入並使用自定義模塊:

# -*- coding: utf-8 -*-

import pwcong

pwcong.hi()

最後執行 main.py 文件,能夠輸出 hi ,第三種方式完成。

 

=====================================================================================

python 中的相互import問題

(轉載地址:https://blog.csdn.net/u011320646/article/details/13292857)

以前用C語言寫做業的時候,偶爾會遇到文件相互引用致使不能編譯的問題,那麼Python中是否會遇到這種狀況呢

# a.py
 
import b
name = 'a'
print b.name
 
# b.py
import a
name = 'b'
print a.name

結果是AttributeError: 'module' object has no attribute 'name'

因而,換個方法試試

# a.py
 
import b
name = 'a'
if __name__ == '__main__':
    print b.name
 
# b.py
import a
name = 'b'
if __name__ == '__main__':
    print a.name

這樣兩個均可以運行了,爲了進一步研究,再換一下

# a.py
 
import b
name = 'a'
if __name__ == '__main__':
    print b.name
 
# b.py
import a
name = 'b'
print a.name

這樣只有a能運行了,b不能運行

並且a輸出的是

a

b

這樣看來,import語句會先執行module裏的內容,而後再向下執行

所以,若是兩個模塊中都只有數據和函數的話,相互import是不會出現問題的,只有在出現全局做用域出現語句時,纔有可能出現問題,固然,這種狀況也是能夠想辦法避免的啦。

相關文章
相關標籤/搜索