山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2021年9月16日

[Python] 離線安裝 Python 以及 Python 套件


 離線安裝 Python 以及 Python 套件 (如 openpyxl)

在網路無所不在的21世紀,我從未想過會需要在 "離線 (無網路)" 的狀況下安裝應用程式,但這情境真的發生了!

這篇就讓我來分享離線安裝 Python 以及 Python 套件的過程吧。

Step 1: 下載 Python 安裝軟體

  • 這步驟當然要在一台 "有網路"電腦上進行,而且最好和 "無網路" 的 "目標電腦" 是相同作業系統 (PS: 我個人是如此)。

  • 從 python.org 官網下載 Python 安裝軟體


Step 2: 下載 Python 套件

  • 這步驟和 Step 1 雷同,也就是 - 要在一台有網路電腦上進行,而且是和無網路 的目標電腦有相同的作業系統。

  • 除第一點的需求外,這步驟還有另一個需求,就是 - "有網路的電腦上必須安裝好了 Python 軟體" ,因為接下來的步驟必須依靠 pip 套件來下載其他套件 (如 openpyxl 、numpy、matplotlib、pandas 等等未隨 Python 安裝軟體的套件),然而 pip 套件則是在安裝 Python 軟體時,就會一起安裝好的,所以,進入下步驟前請先將 Python 軟體安裝好以及Python的路徑設定好。

 (PS: Python 3.4 以後的安裝軟體版本,都已包含了 pip 套件)。

  • 透過執行以下 Command 在 Terminal 下載 Python 套件 。

pip download Package-Name 

這裡的 Package-Name 請替換成你要下載的 Python 套件,例如,要利用Python 來 access Excel 檔案,這就必須再額外安裝 openpyxl 套件,上面的 command 就會如下圖,來下載 openpyxl 套件。

  • 這裡再額外提供一個小技巧,就是建立一個目錄來存放你下載 Python 套件,這會方便下一步轉移檔案到無網路的電腦上 。


Step 3: 轉存下載的 Python 安裝軟體以及 Python 套件至 "無網路" 的目標電腦


Step 4: 安裝 Python 安裝軟體以及設定 Python 路徑

  • 在設定 Python 路徑時,請將 script 的路徑也一併加上去,因為 pip.exe 就是放在 script 的目錄下。

C:\Users\...\AppData\Local\Programs\Python\Python37-32\

C:\Users\...\AppData\Local\Programs\Python\Python37-32\Scripts\

  • 可以透過以下 command 測試 Python 路徑是否設定好否

pip --version 


Step 5: 安裝 Python 套件

  • 請透過執行以下 Command 在 Terminal 安裝 Python 套件 。

pip install --no-index --find-links=d:\Download openpyxl 

這裡的 --no-index --find-links ,簡而言之,就是只會去 find-links 所指定的路徑去找你要安裝的套件。

原文說明如下圖。

  •  想進一步了解 pip install 可以參考這連接 pip install usage

  • d:\Download 則是存放你從 "有網路"電腦 搬過來的 Python 套件的路徑,千萬不要照我打 d:\Download 喔!

  •  openpyxl 則是套件的名稱。




2021年7月24日

[Kivy] 在 PyCharm 建立 Kivy 的開發環境


 在挑選配合 Python 的 GUI Framework 時,Qt 和 Kivy 則是在眾多的 Framework candidates 中,最後留下細細研究的兩個 ,經過了開發環境的安裝以及淺嚐 "Hello World”App 的建立後,最最最後~,我決定了 Kivy。

原因如下:

  • MIT License

  • Open Source on GitHub

  • Cross-Platfrom, Kivy App can run on Windows, Linux, OSx, Android, iOS and RaspBerry Pi

  • Built-in OpenGL ES for GPU Accelerated


Kivy - 簡介


What is Kivy ? Kivy Introduction,這些問題我就交給 Kivy 官方網站了!

因為 Kivy  的官網以及它 WiKi上的 Documents 都提供相當多的資訊了,想對 Kivy 有初步的了解,是足夠的。



在 PyCharm 建立 Kivy 的開發環境 (On Windows 10)

Kivy 的開發環境,基本上是建立在 Terminal Mode,對於 IDEs 的開發環境倒是沒有多加說明。在 PyCharm 建立 Kivy 的開發環境,Kivy 雖有說明,我是有看沒有懂啊!於是就將自己的建立過程做了以下紀錄,分享給大家。


Step 1 - 安裝 Python 

首先就是點這連接 Download and Install Python 安裝 Python。


Step 2 - 建立 Virtual Environment (VM) for Kivy


python -m virtualenv kivy_venv


開啟 Windows 的 terminal,然後選定或建立一個資料夾,接著在選定的資料夾下執行上面 Command,來建立 kivy 要使用的 VM。  

以我為例,我是將 PyCharm 要用的 VM 都建立在 PyCharm 的工作目錄下,下圖可以看到我建立了 3 個 VM,分別用於 Kivy,MicroPython 以及 normal python。


下圖則是 Kivy VM 的檔案結構



Step 3 - 激活 Kivy VM  


kivy_venv\Scripts\activate


Kivy VM 建立好後,還不能使用,必須激活 (activate) 它,方法就是在 Kivy VM 的目錄下,執行上面 Command。


Step 4 - 安裝 Kivy  以及範例


python -m pip install kivy[base] kivy_examples


執行上面 Command,就能安裝 Kivy 基礎的 (base) 套件,若想要多安裝其他套件或完整套件,則可以在中括號內,改成 [base, media] 或是 [full]。

通過以上 4 步驟就完成 Kivy Framework 的安裝了,基本上你已經可以在 Terminal 開發 Kivy App 了。

剛才的 Kivy 安裝步驟裡,也包含範例的安裝,執行以下 Command 就能驗證你是否有安裝正確,以及觀看 Kivy GUI 的 Demo 喔!


python kivy_venv\share\kivy-examples\demo\showcase\main.py


PS: 以上 Install Kivy 以及建立 Kivy VM 更詳細的操作步驟,請參考 Kivy.org 的  Installing Kivy 說明網頁。


Step 5 - 在 PyCharm 建立 Kivy 專案 (Project)  

  1. 打開 Pycharm 後,請點選 File ->  New Project 來建立新專案。

  2. 接著在建立新專案視窗 ,如下圖紅色框,選擇 “Existing interpreter”,其x路徑就是你在 Step 2 建立 Kivy VM 下 python.exe 存在的目錄路徑。


  1. 順利完成新專案的建立後,點選 File -> Settings > Project  ,應該就能看到和下圖一樣是使用 Kivy VM 的設定了。


Step 6 - Copy & Paste then Run HelloWorld.py App

在還不了解如何撰寫 Kivy App 前,可以複製貼上,下面 “Hello World”的範例原始程式碼,來驗證 Kivy 在 PyCham 的執行環境。


'''

Application example using build() + return

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


An application can be built if you return a widget on build(), or if you set

self.root.

'''


import kivy

kivy.require('1.0.7')


from kivy.app import App

from kivy.uix.button import Button



class TestApp(App):


    def build(self):

        # return a Button() as a root widget

        return Button(text='hello world')



if __name__ == '__main__':

    TestApp().run()


順利的話,你應該能看到和下圖一樣的結果。






 


2021年7月23日

[C#] 學習 C# 值得 ?


 學習 C# 值得 ?


因為工作的機緣,需要 maintain 一個 Window GUI 測試程式以及擴充它的功能,原始版本是用 WinForms 寫的,但是程式碼的註解以及變數名稱,毫無閱讀性,基於這個原因,我決定不再 maintain 它了,打算自己重新打造一個。


記得開始寫第一個 Window GUI 應用程式是在 1998 年左右,使用的技術是 MFC;如今 MFC 已經走入歷史,現今的 Visual Studio 2019 又只有 WinForms 和 WPF GUI 應用程式模板 (template)可供選擇了,但是這兩種做法對我而言都是新的,於是就先做了一番功課,再決定要用 C++ , C#, WinForm 或是 WPF 來撰寫新程式。


在翻天覆地的資訊搜集過後,發現:

  • 微軟計畫在2021年底將正式推出 .NET6, MAUI 以及 Visual Studio 2022,且目前 .NET 6, MAUI 以及 Visual Studio 2022 都有 preview 版本了,也釋出相當多的訊息了,在詳閱相關的發文後,發現 C# 以及 WPF 才是微軟要主流的, 並且 WinForms 也將只會有 maintain 了 ,不會再新增功能了。

  • MAUI 是繼微軟買 Xamarin 後,將其整合到 Visual Studio 的第二版 Cross-Platform Framework,很期待他的表現。


知道 C# 以及 WPF 才是最佳的選擇後,心中還是有一個問題,那就是" C# 值得學習 ?”, WPF 的應用程式還是可以以C++撰寫,真的要投入 C# 嗎 ?

於是就上了 TIOBE 網站查看 C# 程式語言的排名以及趨勢,從這篇文章 (TIOBE Index for July 2021) 可以看到 C#  在2021 的排位是 5,2020 也都第五。 


以 Long Term History 來看也是第五,不錯喔!


再以趨勢圖來看,C# 的使用者還穩定的在成長中。


從 TIOBE 的這些知訊來看 “C# 不是落日黃花"。


使用 C# 與 WPF 開發 GUI 應用程式也有月餘了,功能介面也完成大半了,這一個月的使用心得是:

  • 使用 XAML 來描述 Controls 的擺放、屬性、Data Binding 以及 Event Handler ,這讓程式碼看起來更將簡潔了,這延續 Xamarin、Android 的 XML 設計理念,真的做的好啊,尤其對我開發過 Android App 的人,更加有熟悉感。

  • 撰寫程式過程中,難免遇到問題,發現上網搜尋,幾乎都能或多或少得到一些解法或是相關範例,這著實讓我感覺 C# 社群的強大啊!


基於以上原因,我覺得已經會 C/C++ 程式語言的人,投入/轉換到 C# 與 WPF 的程式開發是值得的;另外想掠過 Swift、Java、Dart 程式語言學習,而能直接開發 Android / iOS App 的人 ,C# 則是提供這樣選擇了。







 


2021年7月16日

[RTOS] ArmMbed, Embox, FreeRTOS and Zephyr 超級比一比


[RTOS]

Mbed, Embox, FreeRTOS, Zephyr

超級比一比


偶然的機會看到 Embox 的介紹文,進入網站後,它的 mission 深深打動了我 ...


於是將那份感動,轉化為以下的實際行動,就是將我知道的 Open Source RTOSes ,

做了一番比較,如下。

Zephyr : 我認為是 Linux 在沒有 MMU 的 embedded system 的延伸,

相信不久的將來,使用Zephyr的產品會更加全面。

armMBED : 我原先很看好它,想再深入研究,但他被購併的消息一出,

我就淡了。

FreeRTOS: 老牌的 RTOS,就是這樣了。 

Embox : 相比於其他 3 個 RTOSes,它的 mission 下的真好,但從比較表中,

可以清楚感覺到 "它真的很 Junior",社群資源薄弱,相關文件也還不夠完整,

要使用它來開發產品,還真的要三思啊!


 


2021年1月11日

[Python] 初嘗 Streamlit


Streamlit 是什麼 ?

就如 Streamlit 官網的描述 (上圖) : 透過 Streamlit Python Package 可以快速的將你的 Data Script 以 Web Apps 的形式分享出去。

Streamlit 官網

Streamlit 有一個很大的優點,就是 " No front-end experience required”,也就是說,不需要有 Web Apps 的 background,由 Streamlit 幫你搞定 Web App 的架設,而你只要專心在資料的呈現就可以了。

事實真的如此?親身體驗的結果如下 :

就這樣 3 行原始碼

然後在 Terminal 執行 

Streamlit run yourScript.py 

Web App 就在 Browser 生成了

心得

  • 透過網站的 " Get started”,Step by Step 的引導, 2 分鐘真的就可以建立一個 Web App,真的很酷。

  • 一開始是在 Windows 10 安裝 Streamlit Package,就遇到 install error,嘗試網路上給的解法也是無法順利安裝起來;接著轉戰 Ubuntu 18.04,雖有遇到 Windows 10 有的 errors ,但套用網路上給的解法就成功的安裝了。

  • 分享你的 Web Apps 必須是註冊會員 ( 註冊免費 )。

  • 想要有像樣的 Web App 還是必須熟悉一下他的 API


2021年1月9日

[Python] Change Python3 as the default version on Ubuntu


Python default version on Ubuntu 18.04 LTS

The default version of Python on Ubuntu 18.04 is Python 2, that is, if you run“python”command in the Terminal,  the Python 2 engine will be executed. Even if you have installed Python 3.5 or higher version.

A solution to change Python3 as the default version

    sudo update-alternatives --install /usr/bin/python python /usr/bin python3 1



2021年1月4日

熱門文章