01 – Python 簡介和安裝
1. Python 簡介
編程風格
-
面向過程:以指令為中心,圍繞指令去組織數據
-
面向對象:以數據為中心,圍繞數據去組織指令
-
函數式編程
應用領域
-
Web 程序
-
mod_wsgi
-
web 框架:Flash
-
GUI 開發:Tkinter、wxPython 或 PyQT
-
操作系統
-
其它:NumPy
Python 程序的執行流程
Python 的實現
-
CPython:原始、標準的實現方式
-
JPython:用于與 Java 語言集成的實現
-
IronPython:用于與 .NET 框架集成的實現
Python 性能優化工具
-
Psyco:已被 PyPy 替代
-
Pypy:Python 實現的 Python 解釋器
-
Shedskin:Python 編譯器,能夠將 python 代碼轉換成優化的 C++ 代碼
CentOS 6.x Python 版本為 2.6,升級為 3.5.2 的方法有:
-
編譯安裝
-
pyenv(推薦,多版本共存)
2. 安裝 pyenv
-
pyenv
:用于管理多個 python 版本,它可為每個工作目錄設定使用指定的 python 版本,而不影系統自帶的 python。
[GitHub] https://github.com/yyuu/pyenv
安裝依賴包
CentOS
$ sudo yum install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel bizp2-devel readline-devel python-pip
ubuntu
$ sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev
安裝 pyenv
### 如果要改變 pyenv 安裝目錄,可以 export PYENV_ROOT=<安裝目錄> $ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 104 2089 104 2089 0 0 529 0 0:00:03 0:00:03 --:--:-- 1673 Initialized empty Git repository in /root/.pyenv/.git/ remote: Counting objects: 13213, done. remote: Compressing objects: 100% (46/46), done. remote: Total 13213 (delta 19), reused 0 (delta 0), pack-reused 13164 Receiving objects: 100% (13213/13213), 2.35 MiB | 40 KiB/s, done. Resolving deltas: 100% (9184/9184), done. Initialized empty Git repository in /root/.pyenv/plugins/pyenv-doctor/.git/remote: Counting objects: 26, done. remote: Compressing objects: 100% (12/12), done. remote: Total 26 (delta 10), reused 26 (delta 10), pack-reused 0 Unpacking objects: 100% (26/26), done. Initialized empty Git repository in /root/.pyenv/plugins/pyenv-installer/.git/ remote: Counting objects: 221, done. remote: Total 221 (delta 0), reused 0 (delta 0), pack-reused 221 Receiving objects: 100% (221/221), 3.30 MiB | 41 KiB/s, done. Resolving deltas: 100% (105/105), done. Initialized empty Git repository in /root/.pyenv/plugins/pyenv-update/.git/ remote: Counting objects: 29, done. remote: Total 29 (delta 0), reused 0 (delta 0), pack-reused 29Unpacking objects: 100% (29/29), done. Initialized empty Git repository in /root/.pyenv/plugins/pyenv-virtualenv/.git/ remote: Counting objects: 1800, done.remote: Total 1800 (delta 0), reused 0 (delta 0), pack-reused 1800 Receiving objects: 100% (1800/1800), 517.53 KiB | 62 KiB/s, done. Resolving deltas: 100% (1230/1230), done. Initialized empty Git repository in /root/.pyenv/plugins/pyenv-which-ext/.git/ remote: Counting objects: 39, done. remote: Total 39 (delta 0), reused 0 (delta 0), pack-reused 39 Unpacking objects: 100% (39/39), done. WARNING: seems you still have not added 'pyenv' to the load path. # Load pyenv automatically by adding # the following to ~/.bash_profile: export PATH="/root/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)"
設置 pyenv 環境變量
$ cat>>.bashrc<<EOF ### pyenv settings export PYENV_ROOT="\$HOME/.pyenv" export PATH="\$PYENV_ROOT/bin:\$PATH" eval "\$(pyenv init -)" eval "\$(pyenv virtualenv-init -)" EOF
重新加載 bash 環境
$ source .bashrc
3. pyenv 使用
$ pyenv help Usage: pyenv <command> [<args>] Some useful pyenv commands are: commands List all available pyenv commands local Set or show the local application-specific Python version global Set or show the global Python version shell Set or show the shell-specific Python version install Install a Python version using python-build uninstall Uninstall a specific Python version rehash Rehash pyenv shims (run this after installing executables) version Show the current Python version and its origin versions List all Python versions available to pyenv which Display the full path to an executable whence List all Python versions that contain the given executable See `pyenv help <command>' for information on a specific command. For full documentation, see: https://github.com/yyuu/pyenv#readme
-
install
:安裝指定的 python 版本,--list
可列出 GitHub 上所有可用的 python 版本 -
rehash
:每次安裝新的 python 版本之后,使用 rehash 更新數據庫清單 -
local <version>
:創建.python-version
,用于設置當前目錄的 python 版本,通過刪除.python-version
或--unset
可恢復至默認 python 版本 -
global
:切換全局默認 python 版本,慎用
-
uninstall
:卸載某個版本,包括虛擬環境 -
version
:查看當前目錄使用的 python 版本 -
versions
:顯示本地已安裝的可使用的 python 版本
DEMO
$ pyenv install --list | grep 3.5.2 3.5.2 pypy3.3-5.2-alpha1-src pypy3.3-5.2-alpha1 $ pyenv install 3.5.2 -v /tmp/python-build.[時間戳] Downloading Python-3.5.2.tgz...-> https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
注意:這里也可能是Python-3.5.2.tar.xz。
經過測試,根據實際情況會有所不同,-_##
該命令會從官網上下載 python 的源代碼,并解壓到 /tmp
目錄下,然后在 /tmp
中執行編譯工作。 若依賴包沒有安裝,則會出現編譯錯誤,需要在安裝依賴包后重新執行該命令。
如果網絡不太好,用 pyenv 下載會比較慢,可以先執行該命令,然后到 /tmp/python-build.[時間戳]
目錄下查看要下載的文件的文件名,然后自己到官方網站下載,并將文件放在 ~/.pyenv/cache
目錄下(不存在,新建即可)。pyenv 會檢查文件的完整性,若確認無誤,則不會再重新下載,直接解包編譯安裝。
$ pyenv rehash $ mkdir project_1st project_2nd $ pyenv versions * system (set by /data/mallux/.pyenv/version) 3.5.2 $ ( cd project_lst && pyenv local 3.5.2 && pyenv local) 3.5.2 $ ( cd project_2nd && pyenv local system && python -V) Python 2.6.6
4. pyenv-virtualenv
pyenv virtualenv 是 pyenv 的插件,為 UNIX 系統上 python virtualenvs 提供 pyenv-virtual 命令,它可以為 pyenv 管理的 python 版本運行提供隔離的虛擬環境
。在此虛擬環境下的操作,例如安裝第三方模塊以及修改庫搜索路徑等,都不會在原始的 python 環境里直接操作,從而保證了各 python 版本本身的純凈。
典型案例CentOS 6.x
默認python 2.6
,系統很多應用依賴于此版本,因此需要保留。如果想使用最新的IPython
(需要python 2.7
以上版本支持)來代替默認的python shell
,如果不基于 virtualenv 環境,是無法使用 ipython 的。
因此,對于每一個 python 的工程項目,我們都必須使用pyenv virtualenv
命令來建立虛擬環境。
[GitHub] https://github.com/yyuu/pyenv-virtualenv
安裝
安裝pyenv
時,已克隆到相應的 .pyenv 插件目上錄中,因此該步驟可跳過,相應的 pyenv virtualenv
環境變量也在前面設置過了。
Check out pyenv-virtualenv into plugin directory
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
(Optioal):Add pyenv virtualenv-init
to your shell to enable auto-activation of virtualenvs. This is entirely optional but pretty useful. See “Activate virtualenv” below.
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
Restart your shell to enable pyenv-virtualenv
$ exec "$SHELL"
virtualenv 命令
Usage: pyenv virtualenv [-f|--force] [VIRTUALENV_OPTIONS] [version] <virtualenv-name> pyenv virtualenv --version pyenv virtualenv --help -f/--force Install even if the version appears to be installed already
建立虛擬 python 環境
$ mkdir virtual ; cd virtual $ pyenv virtualenv 3.5.2 pyenv $ pyenv versions * system (set by /data/mallux/.pyenv/version) 3.5.2 3.5.2/envs/pyenv pyenv $ pyenv local pyenv (pyenv) [mallux@c6-Host virtual]$
5. 安裝 IPython 和 Jupyter
[ipython] http://ipython.org/
[jupyter] https://jupyter.readthedocs.io/
-
ipython
:是一個 python 的交互式 shell,比默認的 python shell 好用得多,支持變量自動補全,自動縮進,支持 bash shell 命令,內置了許多很有用的功能和函數。 -
jupyter
:IPython notebook 的分離項目,提供 web 應用的 IDE,特別適合剛開始學習 python 。
配置 pip 國內源
$ mkdir $HOME/.pip $ cat>$HOME/.pip/pip.conf<<EOF [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host = mirrors.aliyun.com EOF
安裝
jupyter
和ipython
:需要python>=2.7
支持
(pyenv) [mallux@c6-Host virtual]$ pip install --upgrade ipython jupyter
運行 ipython 和 jupyter
(pyenv) [mallux@c6-Host virtual]$ ipython Python 3.5.2 (default, Jul 3 2016, 02:57:35) Type "copyright", "credits" or "license" for more information. IPython 4.2.0 -- An enhanced Interactive Python. ? -> Introduction and overview of IPython's features. %quickref -> Quick reference. help -> Python's own help system. object? -> Details about 'object', use 'object??' for extra details. In [1]:
$ nohup jupyter notebook --ip=0.0.0.0 --no-browser &
原創文章,作者:影·隨行,如若轉載,請注明出處:http://www.www58058.com/23588