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
-
先導入sys模塊
-
然後通過
sys.path.append(path)
函數來導入自定義模塊所在的目錄 -
導入自定義模塊。
這種方法必須在每次用到相關的包(模塊)時候都寫一遍,不方便。
第三種,增加.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插件安裝差不多,但是這種方法使用的少。