Python基础
# 1 系统中的python
查看系统bin目录下所有的python
ls /usr/bin/python*
# 2 源
pip
配置文件位置:/Users/ericx/.config/pip/pip.conf
https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
1 2 3 4 5
# 设置源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple # 查看配置 pip config list
conda
配置文件位置:/Users/ericx/.condarc
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 查看最新的即可
恢复默认:
conda config --remove-key channels
# 3 创建环境
# 1 virtualenv
pip3 install virtualenv
创建虚拟环境目录
mkdir myproject cd myproject
创建一个独立的Python运行环境: myenv
virtualenv --no-site-packages myenv
- 参数:–no-site-packages (可省略) 其意义在于不复制已经安装到系统Python环境中的所有第三方包从而得到一个“纯净”的运行环境。
- 此时当前目录下会生成一个名为:“myenv” 的目录,该目录中存放刚生成的虚拟环境文件
激活虚拟运行环境:
1 2 3 4
# Windows: myenv\Scripts\activate.bat # Linux/Mac: source myenv/bin/activate
注: 以上命令执行完后会发现命令提示符变了,有个(myenv)前缀,表示当前环境是一个名为“myenv”的Python环境,此时可以在该环境中按照我们熟悉的方式安装库、运行程序等。
安装各种第三方包,并运行Python命令:
1 2
pip install jieba python myapp.py
注: 因为此时虚拟环境已经激活,所以可以直接使用命令
pip
、python
而不是pip3
和python3
。使用
deactivate
命令退出当前的myenv环境。
# 2 venv
Python 从3.3 版本开始,自带了一个虚拟环境 venv,在 PEP-405 中可以看到它的详细介绍。它的很多操作都和 virtualenv 类似,但是两者运行机制不同。因为是从 3.3 版本开始自带的,这个工具也仅仅支持 python 3.3 和以后版本。所以,要在 python2 上使用虚拟环境,依然要利用 virtualenv 。
有关venv与virtualenv的区别,virtualenv官网: https://virtualenv.pypa.io/en/latest/reference/#compatibility-with-the-stdlib-venv-module 有详细介绍。
安装
1 2 3
# Windows 中venv已经以标准库的形式存在,不用再单独安装 # Linux sudo apt-get install python3-venv # 如有不同版本的Python3,可指定具体版本venv:python3.5-venv
在当前目录创建一个独立的Python运行环境: myenv
1 2 3 4
# Windows py -3 -m venv myenv # Linux python3 -m venv myenv
激活虚拟运行环境、安装第三方包、运行程序及退出虚拟环境等操作均与 virtualenv 相同,在此不再赘述。
# 3 pipenv
pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。
- pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
- 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
- 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
- 通过加载.env文件简化开发工作流程。
- 支持Python2 和 Python3,在各个平台的命令都是一样的。
Pipenv 所解决的问题:
requirements.txt 依赖管理的局限
使用 requirements.txt 管理依赖的时候可能会出现 不确定构建 (the build isn’t deterministic) 问题,举个栗子:如果程序中要使用 TensorFlow 库,那么我们应该在requirements.txt里面写上:1 2 3
# requirements.txt: TensorFlow ...
由于没有指定版本,因此通过指令
pip install -r requirements.txt
安装依赖模块时,会默认安装最新版本的TensorFlow ,如果新版本向后兼容,这完全不用care,但是如果不能向后兼容就会出现:代码无法在该环境运行,即测试环境和生产环境的同一份requirement.txt,结果出来2份不同的环境。再考虑模块本身的依赖等问题,会发现越来越令人头大。而Pipenv使用的Pipfile和Pipfile.lock文件则可以比较好的解决这些问题。多个项目依赖不同第三方库、包版本问题
如应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,当我在A和B程序间切换时,需要不断检测–卸载–安装模块。这意味着只安装其中一个版本可能无法满足每个应用程序的要求,因此需要创建虚拟环境来将A、B程序所需的第三方包分隔开来,此时常用的 virtualenv、venv均可以满足要求,Pipenv也同样集成了该功能。
使用
安装:
1 2 3 4
# pip 安装 pip3 install pipenv # 全局安装,如果只想在当前用户模式下安装,可添加参数:--user # 如需更新可使用 pip3 install --user --upgrade pipenv
注: 如果在使用当前用户模式下安装pipenv后在shell中提示不可用,则需要把用户库的目录“C:\Users\XXX\AppData\Roaming\Python\Python37\Scripts”添加到你的PATH【系统环境路径】中,然后重启电脑,环境变量生效后即可使用。
Pipenv 常用命令
1 2 3 4 5 6
pipenv --two # 使用当前系统中的Python2 创建环境 pipenv --three # 使用当前系统中的Python3 创建环境 pipenv --python 3 # 指定使用Python3创建环境 pipenv --python 3.6 # 指定使用Python3.6创建环境 pipenv --python 2.7.14 # 指定使用Python2.7.14创建环境
- 创建环境时应使用系统中已经安装的、能够在环境变量中搜索到的Python 版本,否则会报错。
- 每次创建环境都会在当前目录下生成一个名为Pipfile文件,用来记录刚创建的环境信息,如果当前目录下之前存在该文件,会将其覆盖。
- 在使用指定版本创建环境的时候,版本号与参数 –python 之间有个空格。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
pipenv shell # 激活虚拟环境 pipenv --where # 显示目录信息 pipenv --venv # 显示虚拟环境信息 pipenv --py # 显示Python解释器信息 pipenv install XXX # 安装XXX模块并加入到Pipfile pipenv install XXX==1.11 # 安装固定版本的XXX模块并加入到Pipfile pipenv graph # 查看目前安装的库及其依赖 pipenv check # 检查安全漏洞 pipenv update --outdated # 查看所有需要更新的依赖项 pipenv update # 更新所有包的依赖项 pipenv update <包名> # 更新指定的包的依赖项 pipenv uninstall XXX # 卸载XXX模块并从Pipfile中移除 pipenv uninstall --all # 卸载全部包并从Pipfile中移除 pipenv uninstall --all-dev # 卸载全部开发包并从Pipfile中移除 exit # 退出当前虚拟环境 pipenv --rm # 删除虚拟环境
requirements.txt 文件的兼容
pipenv可以像virtualenv一样用命令生成requirements.txt 文件
1 2
pipenv lock -r > requirements.txt # 将Pipfile和Pipfile.lock文件里面的包导出为requirements.txt文件 pipenv lock -r --dev > requirements.txt # 将Pipfile和Pipfile.lock文件里面的开发包导出为requirements.txt文件
pipenv 通过requirements.txt安装包
1 2
pipenv install -r requirements.txt pipenv install -r --dev requirements.txt # 只安装开发包
- Python 文件的运行
pipenv run python xxx.py
或
|
|
# 4 conda
|
|