Python之包管理工具

2021-09-07 16:19:57 字數 3569 閱讀 4871

安裝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的取...