Python 導入自定義模塊和包

python基本概念

python模塊

Python 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。

模塊讓你能夠有邏輯地組織你的 Python 代碼段。

把相關的代碼分配到一個模塊裏能讓你的代碼更好用,更易懂。

模塊能定義函數,類和變量,模塊裏也能包含可執行的代碼。

python包

包是一個分層次的文件目錄結構,它定義了一個由模塊及子包,和子包下的子包等組成的 Python 的應用環境。

簡單來說,包就是文件夾,但該文件夾下必須存在 __init__.py 文件, 該文件的內容可以爲空。__init__.py 用於標識當前文件夾是一個包。

如圖所示是目錄結構

第一種:直接導入

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

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

執行文件main.py直接 import pwcong 模塊,同樣如果跟main.py 同級目錄下有另一個xxx.py文件,這個xxx.py文件相當於一個模塊。也可以直接導入 import xxx

如上圖,統一父目錄下子目錄中的testpack.py文件可以直接導入run(包),但是要如下這樣寫

import run.runfunction

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

  1. 先導入sys模塊

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

  3. 導入自定義模塊。

這種方法必須在每次用到相關的包(模塊)時候都寫一遍,不方便。

第三種,增加.pth文件【推薦】

site-packages目錄下添加,自己的路徑

在Ubuntu中查看模塊搜索路徑:

系統本地的python,如下所示

pc@h0167:~$ python
Python 2.7.12 (default, Nov 12 2018, 14:36:49) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 
'/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/home/sdc/.local/lib/python2.7/site-packages', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0']

Anaconda 安裝的的python,如下所示

(py35) sdc@h0167:~/Code/python/run$ python
Python 3.5.6 |Anaconda, Inc.| (default, Aug 26 2018, 21:41:56) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python35.zip', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5', 
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/plat-linux',
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/lib-dynload',
'/home/sdc/SoftWare/Anaconda3/envs/py35/lib/python3.5/site-packages'] 

       可以看到有一個site-packages路徑,找到找個路徑,添加一個路徑文件(.pth),名字自己隨意。Python 在遍歷已知的庫文件目錄過程中,如果見到一個 .pth 文件,就會將文件中所記錄的路徑加入到 sys.path 設置中,這樣 .pth 文件說指明的庫也就可以被 Python 運行環境找到。

把需要使用的包或(模塊)的路徑寫入.pth文件中。寫入完之後使用sys.path 查看是否寫入成功。

注意我遇到的問題:我寫入自定義包路徑成功,但是依然報錯找不到包。這就需要把這個包的父路徑寫到.pth文件中。自己沒有取深究。

第四種

將要被調用的代碼直接拷貝到$PYTHONHOME$\Lib\site-packages 下面,這個就跟Eclipse插件安裝差不多,但是這種方法使用的少。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章