在 IntelliJ 中開發 Python 程式

本篇想要呈現如何在 IntelliJ 中管理並且開發出一個專業的 Python 程式,主要參考資訊來自於IntelliJ 官方網站的連結,撰寫本篇的介紹主要是想要在 local 端,建立一個 BigData 的環境這樣我們可以展示一些大數據程式的應用例如 Join 的介紹,主要可以分成以下幾個單元:

建立虛擬環境 Virtual Environment

建立 Virtual Environment 的方法有很多種,如以下圖所示就有 Virtual Environment, Conda Environment, System Interpreter, Pipenv Environment,本篇主要使用的是 Virtualenv Environment 的方式。

新增 Python 專案

本篇新增的是 demoBigData 的專案,前往 Project Structure 設定頁面,然後如下圖按下加符號進行新增專案或是模組。

按下新增模組之後,可以選擇已經設定好的虛擬環境作為模組或是專案所執行的開發 SDK,本篇測試了 Virtual Environment 與 Pipenv 這兩種方法都是可以用的狀況。

新增安裝程式 setup.py

按下 Tools | Create setup.py 的選項可以新增安裝的設定檔 setup.py,按下之後會出現以下的對話框。

這個檔案主要是在 Python 程式開發完成之後可以將其發布成第三方的函式庫讓第三者可以簡單的利用 pip 或是 pip3 來執行安裝。

執行安裝與卸除安裝

執行編譯與安裝的方法可以利用以下的指令進行,build 為編譯,install 則是安裝。

python3 setup.py build
python3 setup.py install

安裝執行完之後,可以利用 pip3 list 去觀察是否已經安裝了 package。

bash-5.0$ pip3 list
Package          Version   
---------------- ----------
certifi          2019.9.11 
demoBigData      1.1       
pip              19.3.1    
pipenv           2018.11.26
setuptools       41.6.0    
virtualenv       16.7.7    
virtualenv-clone 0.5.3     
wheel            0.33.6

備註:如果要刪除特定的 package 可以使用 pip3 uninstall [package],但是本篇在執行的時候遇到以下的問題,

bash-5.0$ pip3 uninstall demoBigData
ERROR: Cannot uninstall 'demoBigData'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

需要用另外的方法執行,首先需要找到 site-packages 的目的地,可以利用 

bash-5.0$ python3 -m site
sys.path = [
    '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python37.zip',
    '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
    '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/lib-dynload',
    '/usr/local/lib/python3.7/site-packages',
    '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages',
]

刪除特定的 package。

bash-5.0$ cd /usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
bash-5.0$ rm demoBigData*

測試是否有成功匯入 package,我們執行 python3 匯入 package 並且實際執行看看,如下:

bash-5.0$ python3
Python 3.7.5 (default, Nov  5 2019, 06:36:58) 
[Clang 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from demoBigData.HelloWorld import HelloWorld
<module 're' from '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/re.py'> <module 'urllib' from '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/urllib/__init__.py'> <module 'sys' (built-in)> <module 'os' from '/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py'>
>>> HelloWorld
<class 'demoBigData.HelloWorld.HelloWorld'>
>>> a = HelloWorld("Test")
>>> a.printName()
Test

 

管理 Dependency 依賴程式碼

待續!