安裝python包的過程中,經常涉及到distutils、setuptools、distribute、setup.py、easy_install、easy_install和pip等等。
distutils 是 python 標準庫的一部分,這個庫的目的是為開發者提供一種方便的打包方式, 同時為使用者提供方便的安裝方式。
經常使用的setup.py就是基於distutils實現的,然後通過setup.py就可以進行打包或者安裝了。
[root@node175 webdemo]# ls -a -l
總用量 20
drwxr-xr-x 5 root root 126 1月 5 17:25 .
drwxr-xr-x. 45 root root 4096 1月 5 14:50 ..
drwxr-xr-x 8 root root 4096 1月 5 14:53 .git
-rw-r--r-- 1 root root 0 1月 5 14:45 license
-rw-r--r-- 1 root root 0 1月 5 14:45 readme.md
-rw-r--r-- 1 root root 226 1月 5 14:48 requirement.txt
-rw-r--r-- 1 root root 607 1月 5 14:50 setup.cfg
-rw-r--r-- 1 root root 355 1月 5 14:47 setup.py
drwxr-xr-x 2 root root 24 1月 5 14:46 webdemo
這個是乙個最簡單的python專案目錄:
源**放在子目錄webdemo/下,然後包含了軟體包管理的所需的檔案:
set.py
#encoding=utf-8
import setuptools
# in python < 2.7.4, a lazy loading of package `pbr` will break
# setuptools if some other modules registered functions in `atexit`.
# solution from:
try:
import multiprocessing # noqa
except importerror:
pass
setuptools.setup(
setup_requires=['pbr'], pbr=true)
setup.cfg
[metadata]
name = webdemo
version = 0.0.1
description-file = readme.md
author = author
author-email = [email protected]
classifier =
environment :: web environment
intended audience :: developers
intended audience :: education
operating system :: posix :: linux
programming language :: python
programming language :: python :: 2
programming language :: python :: 2.7
[global]
setup-hooks =
pbr.hooks.setup_hook
[files]
packages = webdemo
[entry_points]
console_scripts =
只包含最基本的資訊,接下來是requirements.txt檔案:
# the order of packages is significant, because pip processes them in the order
# process, which may cause wedges in the gate later.
pbr<2.0,>=0.11
配合git:
git init
git add .
git commit -m "init project"
git tag -a 0.0.1 -m "version 0.01"
然後就可以使用python setup.py sdist命令來生成乙個0.0.1版本的原始碼歸檔了:
python setup.py sdist
檢視檔案:
[root@node175 webdemo]# tree
.├── authors
├── changelog
├── dist
│ └── webdemo-0.0.1.tar.gz #生成的壓縮包
├── license
├── readme.md
├── requirement.txt
├── setup.cfg
├── setup.py
├── webdemo
│ └── __init__.py
└── webdemo.egg-info
├── dependency_links.txt
├── entry_points.txt
├── not-zip-safe
├── pbr.json
├── pkg-info
├── sources.txt
└── top_level.txt
3 directories, 16 files
使用者就可以解壓縮這個包然後執行 python setup.py install進行安裝,然後就可以使用這個模組了;
setuptools 是對 distutils 的增強,尤其是引入了包依賴管理。我們可以通過ez_setup.py來安裝setuptools
至於distribute,它是setuptools的乙個分支版本。分支的原因是有一部分開發者認為 setuptools 開發太慢。但現在,distribute 又合併回了 setuptools 中,所以可以認為它們是同乙個東西。
前面看到setup.py可以建立乙個壓縮包,而setuptools使用了一種新的檔案格式(.egg),可以為python包建立 egg檔案。setuptools 可以識別.egg檔案,並解析、安裝它;
當安裝好setuptools/distribute之後,我們就可以直接使用easy_install這個工具了:
安裝egg檔案:通過 easy_install package.egg 可以安裝乙個egg格式的檔案
setuptools/distribute和easy_install之間的關係:
pip install pkg
Python 包管理工具
如圖,可以看到distribute是setuptools的取代,pip是easy install的取代。核心目的是發布,即打包 生成安裝檔案等。disutils setuptools distribute python自帶模組,用於打包 生成安裝檔案 安裝包,需借助setup.py指令碼。distu...
包管理工具
參考 yum和apt get的區別 rpm命令詳解及和yum之間的關係 centos中rpm和yum到底有什麼區別?dpkg和apt get區別 dpkg 常用指令操作快速參考 yum和apt get常用命令 linux分類 一般著名的linux系統基本分成兩大類 1 redhat系列 redhat...
Python的包管理工具
剛開始學習python時,在看文件和別人的blog介紹安裝包有的用easy install,setuptools,有的使用pip,distribute,那麼這幾個工具有什麼關係呢,看一下下面這個圖就明白了 可以看到distribute是setuptools的取代,pip是easy install的取...