python项目环境

2022/10/04 Python 共 3501 字,约 11 分钟

python项目环境

pip

参考

以下是对系统python环境修改,如果是项目级别的,记住先venv后再venv里进行pip3的操作

你可以通过以下命令来判断是否已安装:

pip3 --version    # Python3.x 版本命令
# 可以alias pip=pip3
pip install -U pip # pip升级

指定pip也可以

sudo pip2 install 模块名

pip源修改 阿里源即可

# 清华源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

# 或:
# 阿里源
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
# 腾讯源
pip config set global.index-url http://mirrors.cloud.tencent.com/pypi/simple
# 豆瓣源
pip config set global.index-url http://pypi.douban.com/simple/

ssh问题

比如

Could not fetch URL https://pypi.vnpy.com/numpy/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.vnpy.com', port=443): Max retries exceeded with url: /numpy/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:992)'))) - skipping

出现这个错误是由于 SSL 证书验证失败,mac上可执行下面的命令来安装和更新证书:


/Applications/Python\ 3.x/Install\ Certificates.command

requirements

适用于 单虚拟环境的情况:为什么只适用于单虚拟环境?因为这种方式,会将环境中的依赖包全都加入,如果使用的全局环境,则下载的所有包都会在里面,不管是不时当前项目依赖的

非venv请不要用这个

查看当前pip install的

pip3 list # 输出当前列表

更新requirements文件,每次pip install新的后都需要执行一次

pip freeze > requirements.txt

使用requirements.txt安装依赖

pip install ``-``r requirements.txt

venv 虚拟环境

参考

虚拟环境,和系统Python环境隔离,好处是互不影响,项目级别推荐。

创建虚拟环境 (后面venv是名字,一个项目可以多个venv,这里就叫venv,不用起其他名字了)

python3 -m venv venv

要使用虚拟环境就必须激活

 ➜ source venv/bin/activate

然后在命令行中就会出现

(venv) ➜  

说明虚拟环境已经激活,进入到venv shell了

venv里有pip和Pip3提供, python3也是venv自己的,相当于一个新的shell,然后覆盖了一些python相关命令

要取消虚拟环境,使用

(venv) ➜ deactivate

pycharm结合使用

可通过venv命令行创建好python环境,然后使用pycharm设置里设置interpreter 来切换到venv。

example

  1. 创建venv, 如果有就激活
  2. venv shell里pip requirement操作,安装和更新requirement文件
  3. pycharm设置interpreter

venv 和 pyenv 是两个常用于 Python 环境管理的工具,但它们的目的和工作方式有所不同。以下是两者的主要区别:

1. 基本概念

  • venv

    :

    • 是 Python 自带的虚拟环境工具,用于在同一个系统中创建隔离的 Python 环境,每个虚拟环境有自己独立的库、依赖和包管理,而不影响全局的 Python 安装和库。
    • 虚拟环境的 Python 版本与系统中已安装的某个 Python 版本相同。
    • 主要用于项目依赖管理,确保每个项目使用独立的库和包,而不会互相干扰。
  • pyenv

    :

    • 是用于管理多个 Python 版本的工具,允许用户在系统中安装和切换多个不同版本的 Python。
    • 你可以使用 pyenv 安装、卸载不同版本的 Python(例如 2.x、3.x、甚至是某些特定的 Python 版本),并且可以在全局或每个项目中设置不同的 Python 版本。
    • 主要用于管理不同的 Python 版本,而不是管理 Python 包。

2. 功能对比

功能venvpyenv
虚拟环境管理创建隔离的 Python 虚拟环境(依赖隔离)不直接创建虚拟环境,但可以与 pyenv-virtualenv 一起使用
Python 版本管理依赖于系统中现有的 Python 版本允许安装、管理和切换多个不同版本的 Python
多个 Python 版本支持不能用于安装不同版本的 Python,只能使用系统已安装的版本可以安装和管理多个 Python 版本,例如 3.6、3.8、3.10 等
适用场景适合为每个项目创建独立的虚拟环境,管理项目依赖适合管理系统上的不同 Python 版本,特别是需要多版本开发时
依赖隔离是,用于项目依赖隔离否,单独依赖隔离需要结合 pyenv-virtualenv

3. 工作原理

venv 工作原理:

  • venv 创建的是一个独立的虚拟环境,它会在指定的目录下生成一套独立的 Python 解释器和包管理器(pip)。
  • 虚拟环境与全局环境隔离,因此每个虚拟环境内的包不会影响到全局环境或其他虚拟环境。
  • 虚拟环境的 Python 版本必须与系统中已有的版本一致。

示例:

bash


Copy code
# 创建虚拟环境
python3 -m venv myenv

# 激活虚拟环境
source myenv/bin/activate

# 安装依赖
pip install <package_name>

# 退出虚拟环境
deactivate

Pyenv 多python环境

  • pyenv 允许用户安装和管理多个不同的 Python 版本,并提供方便的切换工具。你可以在全局(系统范围)设置一个默认的 Python 版本,也可以为每个项目设置特定的 Python 版本。
  • pyenv 并不会替换系统的 Python,它通过修改环境变量来改变当前使用的 Python 版本。
  • 如果需要创建虚拟环境,你可以使用 pyenv 安装指定的 Python 版本,再结合 pyenv-virtualenv 来创建虚拟环境。

示例:


# 查看可用的 Python 版本
pyenv install --list

# 安装 Python 3.10.9
pyenv install 3.10.9

# 切换全局 Python 版本为 3.10.9
pyenv global 3.10.9

# 为特定目录设置 Python 版本(例如当前项目)
pyenv local 3.9.6

# 查看当前使用的 Python 版本
pyenv version

对比venv.

venv:

  • 当你只需要为单个项目创建一个独立的 Python 虚拟环境时,venv 是最简单的解决方案。它直接依赖系统中的某个 Python 版本,可以确保不同项目的依赖隔离。

pyenv:

  • 当你需要在系统中安装多个不同版本的 Python 或者需要在不同项目中使用不同的 Python 版本时,pyenv 是更好的选择。它允许你轻松安装和切换 Python 版本,并且与 pyenv-virtualenv 一起使用时,还可以管理虚拟环境。

pyenv+venv 结合使用

Option1, 推荐

pyenv install 3.10.9
python3.10 -m venv venv
source venv/bin/activate

deactivate

Option2, 这个方法需要提前安装pyenv-virtualenv,有点费劲不推荐

pyenv-virtualenv 是一个pyenv的扩展工具,结合了 pyenv 和 venv 的功能,允许你在安装多个 Python 版本的基础上创建虚拟环境。它的工作方式类似于 venv,但更加灵活,因为它可以创建不同 Python 版本的虚拟环境。

示例:


# 安装 pyenv-virtualenv(假设已安装 pyenv)
pyenv install 3.10.9
pyenv virtualenv 3.10.9 myenv

# 切换到虚拟环境
pyenv activate myenv

# 退出虚拟环境
pyenv deactivate

Search

    Table of Contents