使用 pipenv 和 autoenv 管理 python 环境

Posted on Posted in python

使用 pipenv 和 autoenv 管理 python 环境

地址

https://github.com/pypa/pipenv

https://github.com/kennethreitz/autoenv

安装

pip install pipenv autoenv

使用

root@ubuntu:~# mkdir project
root@ubuntu:~# cd project/
root@ubuntu:~/project# pipenv install
root@ubuntu:~/project# ls -l
total 8
-rw-r--r-- 1 root root 138 May 23 17:28 Pipfile
-rw-r--r-- 1 root root 453 May 23 17:28 Pipfile.lock
root@ubuntu:~/project# cat Pipfile
[[source]]
verify_ssl = true
url = "https://pypi.org/simple" # 修改这里,可以改变pip源,换成国内的
name = "pypi"

[packages]

[requires]
python_version = "3.5"

[dev-packages]
root@ubuntu:~/project# pipenv shell # 进入虚拟环境,exit 退出环境
root@ubuntu:~/project# echo "source `which activate.sh`" >> ~/.bashrc # 配置autoenv
root@ubuntu:~/project# echo 'pipenv shell' > .env # autoenv 即是进入到这个目录需要执行的命令

参数

  • pipenv install --three # 使用python3创建
  • pipenv install --two # 使用python2创建
  • pipenv --python 路径 # 自定义python路径
  • pipenv --python 3 # 指定python版本
  • pipenv --python 3.6
  • pipenv --python 2.7.14
  • pipenv install -r path/to/requirements.txt # 安装一个列表
  • pipenv --venv # 当前虚拟环境目录
  • pipenv --py # 查看当前虚拟环境的python地址
  • pipenv --where # 本地项目绝对路径
  • pipenv --upgrade # 更新pipenv&pip到最新版本
  • pipenv --envs # 输出环境变量信息
  • pipenv --rm # 删除当前虚拟环境
  • pipenv --bare # 精简输出
  • pipenv claen # 删除未在Pipfile.lock中指定的安装包
  • pipenv update pkg # 更新包,不加pkg,更新所有
  • pipenv uninstall --all # 卸载虚拟环境所有包

迁移

迁移的时候,直接把 Pipfile 拷贝到目录,然后运行pipenv shell

卸载包和与之相关的依赖

举例

pipenv uninstall `pipenv graph --json |python3 depends.py requests`

depends.py

import sys
import json
package = sys.argv[1]
other_dependencies = set()
removing_dependencies = set([package])
for i in json.load(sys.stdin):
    for p in i['dependencies']:
        key = p['key']
        if i['package']['key'] == package:
            removing_dependencies.add(key)
        else:
            other_dependencies.add(key)
print(' '.join(removing_dependencies - other_dependencies))

Leave a Reply

Your email address will not be published. Required fields are marked *

5 × 3 =