-->
顯示具有 Python 標籤的文章。 顯示所有文章
顯示具有 Python 標籤的文章。 顯示所有文章

2020/06/02

Pytrhon 檢查語法是否正確的方式

如果是用 python 直接跑:
python3 views.py
Traceback (most recent call last):
  File "views.py", line 1, in <module>
    from django.shortcuts import render
python 執行了程式,發現 import 或是程式有用到外部 library 而導致噴錯。 


 如果只要檢查語法是否正確,需要靠 py_compile module:
python3 -m py_compile views.py

2020/05/07

執行 inspectdb 把已經存在 DB 的 schema 拉回來

今天的情況是 Laravel 已經做好 migration,但是後來決定使用 Python 來處理一些 PHP 處理起來比較麻煩的東西,但資料庫必須共用、無法分開。




Django 有的功能叫做「inspectdb」,當 settings.py 的資料庫都設定好以後,在執行「./manage.py inspectdb」,就會自動生成 models。

所以懶一點的作法是「./manage inspectdb > app/models.py」。

2020/04/08

用 venv 為 Python 建立虛擬環境

大家都知道把套件裝成 global 會發生什麼事吧?所以若要開發的 project 需要很複雜套件相依性,則可以考慮使用 Python 的 virtualenv。

先來安裝 pip3:
sudo aptitude install python3-pip

在用 pip3 來裝 virtualenv:
pip3 install virtualenv

會後在準備建立的專案執行以下指令:
python3 -m venv project

這個時後你會發現 project 目錄底下已經有不少東西了,這個時候就可以切入虛擬環境中:
$ source bin/activate
(project) $ 

奇蹟出現了,你的 prompt 最前面已經加上專案名稱,代表你已經完全在專案的環境底下,這環境下不管你用 pip 專什麼東西都不會影響到外部其他專案。

當開發結束,要離開個環境的時候,記得下指令「deactivate」以便離開虛擬環境。

Python 筆記

沒有特別提示的話,Python 的直譯器指的都是 CPython,另外還有 PyPy、IronPy、Jython 等。

另外 CPython 的 garbage collection 是 by reference counting 的,必要時可以用下面方式 GC:
del variable

2019/12/06

相信很多人看過這個錯誤訊息:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.

想必開剛使接觸 Python 的人應該都會遇到這個問題吧?然後就乖乖的「pip install MySQL db」、「pip install ConfigParser」之類的。
不過大家不用擔心,地雷我已經踩完,邊直接給答案。

先在系統上安裝套件「sud aptitude install libmysqlclient-dev」再回到 python 環境底下安裝「pip install mysqlclient」。到這邊都沒有看到錯誤的話,就可以試試看做一次 migration 了。

Ref: https://stackoverflow.com/a/4169790

2019/07/03

使用 setup.py 安裝 Python Package 要切換至根目錄

最近在研究 Python,下載了 RPIO 來安裝:
$ wget http://...... -O RPIO.zip
$ unzip RPIO.zip
$ python RPIO/setup.py install
....
running install
running bdist_egg
error: error in 'egg_base' option: 'source' does not exist or is not a directory

弄了半天,才知道有路徑問題,要先切到 package 根目錄再安裝才會成功:
$ cd RPIO
$ python setup.py install

沒寫過 Python 直接衝 GPIO 有越級打怪的感覺,不知道機器會不會被我搞爛 Orz

2009/09/10

Python 的 system("pause")

windows 的命令提示字元執行完會自動關閉,只好什麼語言都來個 system("pause")。
import os

# blablabla .....

os.system("pause")