jieye の 数字花园

Search

Search IconIcon to open search

Python基础

Last updated May 25, 2022

# 1 系统中的python

  1. 查看系统bin目录下所有的python

    ls /usr/bin/python*

# 2 源

  1. 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
    
  2. conda

    配置文件位置:/Users/ericx/.condarc

    https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ 查看最新的即可

    恢复默认:conda config --remove-key channels

# 3 创建环境

# 1 virtualenv

virtutalenv

pip3 install virtualenv

  1. 创建虚拟环境目录
    mkdir myproject cd myproject

  2. 创建一个独立的Python运行环境: myenv
    virtualenv --no-site-packages myenv

    1. 参数:–no-site-packages (可省略) 其意义在于不复制已经安装到系统Python环境中的所有第三方包从而得到一个“纯净”的运行环境。
    2. 此时当前目录下会生成一个名为:“myenv” 的目录,该目录中存放刚生成的虚拟环境文件
  3. 激活虚拟运行环境:

    1
    2
    3
    4
    
    # Windows:
    myenv\Scripts\activate.bat
    # Linux/Mac:
    source myenv/bin/activate
    

    注: 以上命令执行完后会发现命令提示符变了,有个(myenv)前缀,表示当前环境是一个名为“myenv”的Python环境,此时可以在该环境中按照我们熟悉的方式安装库、运行程序等。

  4. 安装各种第三方包,并运行Python命令:

    1
    2
    
    pip install jieba
    python myapp.py
    

    注: 因为此时虚拟环境已经激活,所以可以直接使用命令pippython而不是pip3python3

  5. 使用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. 安装

    1
    2
    3
    
    # Windows 中venv已经以标准库的形式存在,不用再单独安装
    # Linux
    sudo apt-get install python3-venv  # 如有不同版本的Python3,可指定具体版本venv:python3.5-venv
    
  2. 在当前目录创建一个独立的Python运行环境: myenv

    1
    2
    3
    4
    
    # Windows
    py -3 -m venv myenv  
    # Linux 
    python3 -m venv myenv
    
  3. 激活虚拟运行环境、安装第三方包、运行程序及退出虚拟环境等操作均与 virtualenv 相同,在此不再赘述。

# 3 pipenv

pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。

  1. pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
  2. 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
  3. 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
  4. 通过加载.env文件简化开发工作流程。
  5. 支持Python2 和 Python3,在各个平台的命令都是一样的。

Pipenv 所解决的问题:

  1. 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文件则可以比较好的解决这些问题。

  2. 多个项目依赖不同第三方库、包版本问题
    如应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,当我在A和B程序间切换时,需要不断检测–卸载–安装模块。这意味着只安装其中一个版本可能无法满足每个应用程序的要求,因此需要创建虚拟环境来将A、B程序所需的第三方包分隔开来,此时常用的 virtualenv、venv均可以满足要求,Pipenv也同样集成了该功能。

使用

  1. 安装:

    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【系统环境路径】中,然后重启电脑,环境变量生效后即可使用。

  2. 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创建环境
    
    1. 创建环境时应使用系统中已经安装的、能够在环境变量中搜索到的Python 版本,否则会报错。
    2. 每次创建环境都会在当前目录下生成一个名为Pipfile文件,用来记录刚创建的环境信息,如果当前目录下之前存在该文件,会将其覆盖。
    3. 在使用指定版本创建环境的时候,版本号与参数 –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  # 删除虚拟环境
    
  3. 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文件
      
  1. Python 文件的运行
    pipenv run python xxx.py
1
2
3
4
# 进入激活环境
pipenv shell
# 运行文件
python xxx.py

# 4 conda

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 查看当前存在哪些虚拟环境
conda env list 
conda info -e

# 查看安装了哪些包
conda list

# 创建/删除虚拟环境
conda create -n your_env_name python=3.8 # 注意加上版本
conda remove -n your_env_name --all

# 激活环境
conda activate your_env_name

安装的anaconda环境默认启动base环境,想要关闭,linux设置如下:
conda config --set auto_activate_base false # 设置非自动启动