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

2011/10/24

套件管理員

Python:pip
easy_install 或 setuptools 或 ez_setup.py
使用 easy_install 安裝起來放在 site-packages 的 *.egg 類似 Java 的 *.jar

PHP:Pear

Ruby:RubyGems

Perl:CPAN(Comprehensive Perl Archive Network)

R:CRAN

Node.js:npm

Ubuntu:apt-get、dpkg

Redhat:yum

Mac:homebrew

Reference:
01. http://www.ibm.com/developerworks/cn/linux/l-cppeak3.html

2011/05/31

PyAOS

環境:RHEL 5.6 i386

Reference:
01. http://pyaos.johnny-lin.com/?p=76

2011/05/05

rpmbuild - 以 Python 2.7 為例

Red Hat Enterprise Linux 的很多東西都很舊,特別是 RHEL 5 系列。
有些新的軟體更新,它不見得會跟著推出新的 rpm 檔。
除了使用 tarball 安裝方法,也可以自己包一個 rpm 檔。

環境:RHEL 5.6

安裝必備套件
yum groupinstall "Development Tools"
yum install rpmdevtools

you should NEVER build an RPM with the root user.
絕對不要使用 root 來打包 rpm!


建立一個專門打包 rpm 的使用者帳號
useradd rpm_maker

切換成該使用者
su - rpm_maker

在 rpm_maker 的家目錄下執行
rpmdev-setuptree     # 會建立 ~/rpmbuild 目錄

下載 Python2.7 原始檔,解壓縮,放置 python-2.7.spec 與原始檔
cd ~
wget  http://www.python.org/ftp/python/2.7.1/Python-2.7.1.tar.bz2
tar  jxvf Python-2.7.1.tar.bz2
cp  ~/Python-2.7.1/Misc/RPM/python-2.7.spec  ~/rpmbuild/SPECS/
mv  Python-2.7.1.tar.bz2  ~/rpmbuild/SOURCES/

補足相關套件
yum install tk-devel tcl-devel expat-devel db4-devel gdbm-devel sqlite-devel

根據指定的 spec 建立 rpm 檔
cd ~/rpmbuild/SPECS/
rpmbuild -ba python-2.7.spec

http://blog.milford.io/2012/01/building-and-installing-python-2-7-rpms-on-centos-5-7/

Reference:
01. https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-tw
02. http://www.grenadepod.com/2009/12/26/building-python-2-6-4-rpm-for-centos-5-4/
03. http://www.ibm.com/developerworks/library/l-rpm1/
04. http://villaroad.com/2010/10/rolling-python-2-6-2-on-centos-5-3/
05. http://willsani.com/2011/03/02/centos-5-5-x86_64-install-python-2-7/
06. http://www.joywang.info/?p=112
07. http://serverfault.com/questions/11209/python-3-0-rpms-for-centos-5-rhel-5
08. http://serverfault.com/questions/162217/upgrading-python-on-rhel5
09. http://stackoverflow.com/questions/4149361/on-linux-suse-or-redhat-how-do-i-load-python-2-7

2011/05/02

mod_python 與 mod_wsgi

Reference:
01. http://docs.python.org/howto/webservers.html
02. http://www.modpython.org/python10/
03. http://code.google.com/p/modwsgi/

Django

【安裝 Django】

Ubuntu 底下安裝可以使用:sudo apt-get install python-django
Red Hat 底下安裝可以使用:yum install Django

Ubuntu 預設會把 Django 放在:/usr/local/lib/python2.*/site-packages
Red Hat 預設會把 Django 放在:/usr/lib/python2.*/site-packages

Python won't recognize Django unless it is installed in the "site-packages" directory, so instead we just create a symbolic link to the source code in our home directory.

由上文可知,其實 Django 只要放到正確的 site-packages 下,Python 就可以認到了。
比較麻煩的就是 Python 版本的差異,例如 RHEL 5 預設只有 Python 2.4。
但是 RHEL 5 底下使用 yum 安裝的所有 Python 套件,都會放到 Python 2.4 的 site-packages。
如果你執行的環境是 Python 2.6,那就很頭大了,Python 2.6 底下 import 會少一堆東西。

較好的解決方案是使用:python-virtualenv
跑題了,之後再補充。

使用 Django 原始檔來安裝(想成是 Linux 的 tarball install 吧),自由度會比較高些。

可以下載官方版本來解壓縮,或使用 Subversion 同步一份到自己的家目錄:
cd /var/www
svn co http://code.djangoproject.com/svn/django/trunk/ django_src

使用這個命令取得 Python 的 site-packages 路徑:
#注意 python、python2.4、python2.6 的差別!
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
python2.4 -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
python2.6 -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

選擇你的 site-packages 路徑(python2.4 或 python2.6),做一個 symbolic link 到那裡:
ln -s /var/www/django_src/django   你的 site-packages 路徑/django

把 django-admin.py 加到執行路徑(PATH)裡:
sudo cp /var/www/django_src/django/bin/django-admin.py /usr/local/bin

基本上這樣就安裝好 Django 了。
可以進入你的 Python 2.* 環境,測試一下:
>> import django



【建立 Django 專案】

建立一個新的 Django 專案:
cd /var/www/
django-admin.py startproject hello_django

裡面預設的結構是:
__init__.py
manage.py
setting.py
urls.py

再增加幾個資料夾到專案裡面:
cd /var/www
ln -s /var/www/django_src/django/contrib/admin/media  admin_media

cd /var/www/hello_django
mkdir media
mkdir templates

setting.py 裡面可以設置管理資訊與資料庫設定:
ADMINS = (
     ('Your Name', 'your_email@domain.com'),
)

DATABASE_ENGINE = 'mysql'            # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'databaes_name'    # Or path to database file if using sqlite3.
DATABASE_USER = 'user_name'          # Not used with sqlite3.
DATABASE_PASSWORD = 'user_password' # Not used with sqlite3.
DATABASE_HOST = ''                 # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''                 # Set to empty string for default. Not used with sqlite3.

TEMPLATE_DIRS = ( 
    "/var/www/hello_django/templates/"    # Absolute path
)

MEDIA_ROOT = '/var/www/hello_django/media/'   # Absolute path to the directory that holds media.

# URL that handles the media served from MEDIA_ROOT. 
# Make sure to use a trailing slash if there is a path component (optional in other cases).
# Examples: "http://media.lawrence.com", "http://example.com/media/" 
MEDIA_URL = 'http://yourdomain.com/media/'

# URL prefix for admin media -- CSS, JavaScript and images. 
# Make sure to use a trailing slash.
# Examples: "http://foo.com/media/", "/media/".
ADMIN_MEDIA_PREFIX = '/admin_media/'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
)

同步資料庫:
django-admin.py syncdb

編輯 urls.py 檔:
# Uncomment this for admin:
 (r'^admin/', include('django.contrib.admin.urls')),



【設置 Apache】




Reference:
01. http://jeffbaier.com/articles/installing-django-on-an-ubuntu-linux-server/
02. http://docs.djangoproject.com/en/dev/howto/deployment/modwsgi/
03. https://help.ubuntu.com/community/Django
04. http://nildamului.blogspot.com/2009/03/django-1.html
05. http://nildamului.blogspot.com/2009/04/django-2.html