pipenv现在已经是流行的python包管理器了,但是与npm不同的是他安装时不会锁定依赖,默认源也是pypi的(虽然好像可以通过配置换),而且pipenv创建完环境会以当前默认python解释器为指定的解释器,该做的不做不该做的倒是做了,很麻烦,所以特此写一个一键脚本。主要部分参考知乎一位大神的,帖子找不到了 。
这个脚本可以换清华源、锁定依赖版本、多python版本支持
最好在系统python解释器安装一下tomlkit,当然你也可以直接虚拟环境去装然后用
使用的话,在pipenv创建完环境之后,运行一下该脚本,便可换源、删除python版本锁定
在开发完之后,再运行一下脚本,便可锁定依赖版本
# -*- coding: utf-8 -*-
import json
from pathlib import Path
import tomlkit
d = json.load(open('Pipfile.lock'))
p = Path('Pipfile')
document = tomlkit.loads(p.read_text())
# 更换清华源
document['source'][0]['url'] = "https://pypi.tuna.tsinghua.edu.cn/simple"
# 多版本支持
if 'requires' in document:
del document['requires']
# 锁定包版本
if Path('Pipfile.lock').exists():
d = json.load(open('Pipfile.lock'))
for k, v in d['default'].items():
if k in document['packages']:
document['packages'][k] = v['version']
# 开发依赖添加tomlkit
if 'dev-packages' not in document:
document['dev-packages'] = {}
document['dev-packages']['tomlkit'] = '*'
p.write_text(tomlkit.dumps(document))