Python
python2的最后一个版本是python2.7, 2020年停止更新.
Windows安装:
Python2.7.9之后的版本直接下载msi安装即可.
选择自动设置PATH,默认安装pip和setuptools.
可以使用IDLE或python命令行或cmd执行python命令
Linux安装:
$sudo apt-get install python
$sudo yum install python
$sudo apt-get install python-dev
$sudo apt-get install python3-dev
$sudo yum install python-devel
标准库的路径:
C:\Python*\Lib
/usr/lib/python*/
python的IDE:
- Windows: IDLE
- Linux: Vim
- Pycharm/VS
python命令
$ python/ipython # 进入python解释器
>>>exit()/Ctrl+d # 退出python解释器
>>>help() # 进入help工具
help>quit # 退出help工具
$ pydoc --help # 文档工具
# -c cmd, __name__ != '__main__'
$ python -c 'import module/package; expressions'
# -m mod, __name__ == '__main__'
$ python -m 'module/package'
python的可用接口
-
python内置常量,函数,类和异常.
C/C++实现的,不需要导入就可以使用的。
-
python标准库
python实现的,需要导入才能使用的。
-
python外部库
需要安装和导入才能使用的。外部库是对python代码的补充。
-
python框架
需要安装和导入才能使用的。python代码是对外部库的补充。
python的其它解释器
cpython
python的默认解释器,安装python即可获得。
https://github.com/python/cpython
stackless
cpython的增强版,支持多线程。
https://bitbucket.org/stackless-dev/stackless
pypy
用python写的python解释器。
比cpython更快的python。
https://bitbucket.org/pypy/pypy
jpython
java开发的可以运行在JVM平台的python解释器。
ironpython
C#开发的可以运行在.net/mono平台的python解释器。
python开发相关的工具
ipython
python写的交互式解释器。
https://github.com/ipython/ipython
$pip install ipython
pyenv
python的版本管理工具, 用于管理多个pyton版本.
安装第三方库
第三方库路径:
C:\Python*\Lib\site-packages
~/.local/lib/python*/site-packages
/usr/local/lib/python*/dist-packages
/usr/local/lib/python*/site-packages
/usr/lib/python*/dist-packages
/usr/lib/python*/site-packages
二进制安装:
$sudo apt-get install python-<packagename>
源码安装第三方库:
$ cd package
$ python setup.py install
# 安装到 ~/.local/lib/python*/site-packages
$ python setup.py install --user
easy_install(setuptools)安装:
<https://github.com/pypa/setuptools>
easy_install安装egg包,不推荐使用.
setuptools带的工具,从pypi的egg归档格式中安装。
python2.7.9, python3.4, virtualenv自带setuptools.
缺点是不支持卸载。
$sudo apt-get install python-setuptools
$sudo yum install python-setuptools
$ sudo apt-get install python3-setuptools
$ pip install -U setuptools
$sudo -E easy_install packagename[=version] # 安装
$sudo -E easy_install -U packagename[=version] # 升级
pip安装:
<https://github.com/pypa/pip>
直接从pypi安装wheel格式和sdist格式(也就是tarball)。
$sudo apt-get install python-pip
$sudo apt-get install python-wheel
$sudo yum install python-pip
$sudo yum install python-wheel
$ sudo apt-get install python3-pip
$ sudo apt-get install python3-wheel
$pip install -U pip
$pip install -U wheel
$pip install -U setuptools
$ pip install packagename[==version] # 安装
$ pip install -U packagename[==version] # 升级
$ pip uninstall packagename # 卸载
$ pip install XXX.whl # 安装wheel包
$ pip3 install/uninstall <packagename>
pip命令:
$pip list
$pip search packagename
$pip freeze > requirements.txt
$pip install -r requirements.txt
$ pip install [options] <requirement specifier> [package-index-options]
$ pip install --target <dir> # 通过target指定安装的具体site-packages路径,不包括scripts/data
$ pip install --prefix <dir> # 通过prefix指定安装的bin, lib等路径,会安装scripts/data等
$ pip install --root <dir> # 会自动创建<dir>/usr/local/bin,<dir>/usr/local/lib来安装
$ pip install --user # 安装到/home/$USER/.local/lib
# 下面是通过源码安装,不能通过whl等二进制安装
$ pip install --install-option="--<options>" # 通过源码安装,传递参数给python setup.py install
$ pip install --global-option=...
# 一般指定了其它安装路径都需要用-I, 因为如果系统路径已经安装,就不会再安装
$ pip install -I/--ignore-installed # 重新安装, 配合--prefix使用.
# General options:
--log <path>
--timeout <sec>
--trusted-host <hostname>
--cache-dir <dir>
--no-cache-dir
--disable-pip-version-check
# Package index options
-i, --index-url <url>
--extra-index-url <url>
--no-index
-f, --find-links <url>
--process-dependency-links
# 手动修改pip的源
$ sudo vim /etc/pip.conf
[global]
timeout=120
no-cache-dir = false
trusted-host = pypi.douban.com
index-url = http://pypi.douban.com/simple
# index-url = https://<user>:<password>@ip:port/simple
[freeze]
timeout = 10
[install]
ignore-installed = true
no-dependencies = yes
no-compile = no
pip-tools
根据项目中的import导出依赖。
https://github.com/jazzband/pip-tools
pipreqs
https://github.com/bndr/pipreqs
python代码检查
flake8
https://github.com/PyCQA/flake8
Include: pyflakes, pep8/pycodestyle, McCabe
pylama
https://github.com/klen/pylama
Include: pyflakes, pylint, pep8/pycodestyle, pep257/pydocstyle, mccabe, radon, ghslint(for js)
pep8/pycodestyle
Simple Python style checker in one Python file.
https://github.com/PyCQA/pycodestyle
pep257/pydocstyle
docstring style checker
https://github.com/PyCQA/pydocstyle
jedi
Awesome autocompletion and static analysis library for python.
https://github.com/davidhalter/jedi
mccabe
McCabe complexity checker for Python
https://github.com/PyCQA/mccabe
pyflakes
A simple program which checks Python source files for errors.
Faster than pylint.
https://github.com/PyCQA/pyflakes
pylint
A Python source code analyzer which looks for programming errors, helps enforcing a coding standard and sniffs for some code smells
https://github.com/PyCQA/pylint
$pylint --list-msgs
$pylint --help-msg=C6409
rope
A python refactoring library
https://github.com/python-rope/rope
python项目结构
.
|-- README.rst
|-- LICENSE
|-- AUTHORS.rst
|-- CONTRIBUTING.rst
|-- project 项目源代码目录
|-- __init__.py 包文件
|-- <module>.py // 模块名不要和已知的包重名
...
|-- docs 用来存放文档
|-- conf.py
|-- index.rst
...
|-- tests 用来存放测试相关的文件(不能有__init__.py)
|-- examples 用来存放使用本包相关的例子(不能有__init__.py)
|-- bin 用来存放将被setup.py安装的二进制脚本
|-- data 用来存放其它类型文件
|-- etc 用来存放配置文件
|-- tools 用来存放与工具相关shell脚本
|-- scripts 用来存放安装相关的脚本
|-- setup.py 标准安装脚本
|-- setup.cfg
|-- MANIFEST.in
|-- .gitignore
|-- .gitattributes
|-- requirements.txt 依赖的环境
|-- Makefile
|-- fabfile.py
CICD
buildbot
Python-based continuous integration testing framework
https://github.com/buildbot/buildbot
pybuilder
Continuous build tool for Python.
https://github.com/pybuilder/pybuilder
pypi
创建私有的pypi服务器