顯示具有 Python3 標籤的文章。 顯示所有文章
顯示具有 Python3 標籤的文章。 顯示所有文章

2018年10月17日 星期三

(暫存) 追蹤智能合約

之前看到人家說 web3.py 有 bug,好像追蹤不到,不過現在看 issue 似乎是在新版解決了的樣子,之後要找個時間來實驗一下。

不過如果連接的是 infura 的話,因為 infura 不支援 filter event,所以好像無法靠 Contract Events 追蹤。

參考資料
  1. Empty event log #730
  2. Event logs? Am I doing something wrong?
  3. Listen to filtered events using web3js 0.19 (provided by infura)

2018年9月19日 星期三

在 AWS Lambda 執行 web3.py

這篇要紀錄想要在 AWS Lambda 上執行 web3.py 之前需要先做的準備。因為 web3.py 用了一些 C/C++ 編譯的函式庫,因此必須要事先準備好能夠在 AWS Lambda 上執行的編譯後結果。主要步驟也可以參考 [2-3]。

2018年9月6日 星期四

使用 Python 存取 Ethereum:透過 web3.py

想要透過 Python 存取 Ethereum,從 Ethereum 官方的 Github 中可以看到有兩種套件可以達成:web3.py [1] 和 pyethereum [2]。就我目前的理解來說,兩者的差別在於 web3.py 主要是作為外部存取 Ethereum 的客戶端,也就是說 web3.py 函式庫本身不會成為區塊鏈節點,也不會進行區塊鏈同步,而是連接一個區塊鏈上的節點,把區塊鏈當成像是外部資料庫一樣取用而已;而 pyethereum 則比較像是 geth 那樣,是用來把自己做成一個區塊鏈節點,會正常進行區塊同步,也可以作為礦工開始挖礦。

在本篇當中,因為是想要一個輕量級的客戶端來與區塊鏈互動,並不想要準備龐大的儲存空間來存放區塊鏈的資料,因此會以 web3.py 為主。

Microsoft Visual C++ 14.0 is required

參考資料
  1. Fix Python 3 on Windows error Microsoft Visual C++ 14.0 is required

2018年1月10日 星期三

Python 的時間處理

字串轉時間

假設字串是「Wed, 10 Jan 2018 08:09:13 +0000」,可以使用這樣的 Pattern 來解析:

from datetime import datetime

time_text = 'Wed, 10 Jan 2018 08:09:13 +0000'
datetime.strptime(time_text, '%a, %d %b %Y %H:%M:%S %z')

其中 Pattern 的寫法可以參考官方的文件 [1]。

取得帶有時區資訊的現在時間
需要特別這麼做的原因,是因為如果是直接使用 datetime.now() 的話,得到的時間是沒有時區的
這在需要做時間比較時有可能會有問題,尤其在要比較的時間本身就有時區資訊的話,Python 會回傳錯誤訊息。

from datetime import datetime, timezone

datetime.now(timezone.utc)
計算時間
取得三小時前的時間

from datetime import datetime, timedelta, timezone

datetime.now(timezone.utc) - timedelta(hours=3)
參考資料
  1. strptime
  2. Python get current time in right timezone [duplicate]

2018年1月3日 星期三

Python 的日誌

Python 內建就有個 logging 的套件 [1],可以使用設定檔來控制 log 的輸出。
不過實務上有一點小地方需要注意。

2017年12月28日 星期四

在 AWS Lambda 的 Python 程式匯入額外的套件

AWS Lambda 的執行環境有預設匯入的套件
如果使用了其他的套件,Python 程式就會拋出找不到套件的錯誤。

從 AWS 的官方文件 [1] 中,可以看出關於這個問題的解決方法
就是事先把套件裝進程式裡,當成是程式自身的一部分,一起打包送進 AWS Lambda。

具體來說,也就是假設我的 Python 程式的資料夾是放在 D:\python\my_project
則可以使用以下的指令,把套件指定安裝到專案資料夾中。

pip install requests -t D:\python\my_project

而做完後,就會看到專案資料夾跑出一大堆資料夾和檔案
之後要上傳到 AWS Lambda 時,把整個資料夾(也就是 D:\python\mu_project\* )壓縮成 zip
一起上傳到 AWS Lambda 即可。

參考資料
  1. Creating a Deployment Package (Python)

2017年11月12日 星期日

從 Jupyter 讀取 Windows 磁碟中的鐵達尼號資料

在書上的範例中,提到用鐵達尼號的資料做分析
不過書上範例所指的資料位址已經無法存取了。
稍微搜尋了一下,發現 Kaggle 也有提供這個資料 [1],而且是免費的。

從 [1] 下載資料下來之後,假設是放在 D:\test\data\titanic 這個資料夾裡,訓練用的資料命名為 train.csv

import pandas

training_data_path = "D:\\test\\data\\titanic\\train.csv"

# Read training data.
training_data = pandas.read_csv(training_data_path)
print(training_data)

路徑要記得跳脫,才能正確找到檔案。

參考資料
  1. Kaggle - Titanic: Machine Learning from Disaster
  2. Read a .csv into pandas from F: drive on Windows 7

2017年11月7日 星期二

透過 Anaconda 安裝 Tensorflow 與 Keras

  1. 下載並安裝 Anaconda
  2. 執行以下的指令建立 Python 虛擬環境
    conda create --name tensorflow python=3.5 anaconda
  3. 啟用虛擬環境
    activate tensorflow
  4. 安裝 Tensorflow
    pip install tensorflow
  5. 此時想再使用 pip 會出錯 [1],要先以下述指令強制重新安裝 html5lib
    conda install --force html5lib
  6. 安裝 keras
    pip install keras
參考資料
  1. pip throws TypeError: parse() got an unexpected keyword argument 'transport_encoding' when trying to install new packages

2017年7月23日 星期日

使用 Django 建立網站(二):建立第一個自定義的頁面

在前一篇當中,我們已經產生了一個叫做 myweb 的專案,接著要建立一個應用程式(App)。
這部份基本上也可以參考 Django 官方的教學文件 [1]。

2017年7月16日 星期日

在 Eclipse 使用 Python 虛擬環境開發 Python

最近再度開始學習 Python,然後看到不少 Python 套件的官方文件提到虛擬環境
因此來紀錄一下,以 Java 開發者的角度來看 Python 虛擬環境相關的基本知識。

2017年7月15日 星期六

在 Ubuntu 14.04 安裝 venv

在 Ubuntu 14.04 上,想要用下述指令建立虛擬環境時,出現沒有安裝 venv 的錯誤訊息

root@default:/# python3 -m venv myvenv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt-get install python3-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

但依照訊息的描述去安裝 python3-venv 時,又出現找不到這個 package 的錯誤。
參考 [1] 的作法,實際上好像應該安裝的套件是 python3.4-venv

apt-get install python3.4-venv
參考資料
  1. Python3-venv not installed ubuntu 14.04

2017年7月5日 星期三

使用 Django 建立網站(一):安裝 Django

其實只是需要用 Python 做 RESTful 的網站,然後隨便搜尋一下就看到 Django,於是就試著用看看。

2015年8月31日 星期一

使用 Python 整合 VMware vSphere

pyVmomi [1] 是一個由 VMware 官方釋出的 Python API,可以用來存取 vSphere/vCenter 的資源。
另外有一些簡易的使用範例 [2],可以大略參考要如何開始使用 Python 連接 vSphere/vCenter。
這篇是用來記錄初步介接 vSphere/vCenter 的經驗。