在一台新的机器上执行py文件的时候经常会遇到环境的问题。
现有的一些解决方案:
$ pip install pipenv
在项目路径下使用
$ pipenv install
# 也可以按如下方式指定版本
$ pipenv --python 3.6
创建环境
$ pipenv shell
使用exit
可以退出环境
激活环境后可以直接使用python xxx.py
以该环境运行脚本
也可以使用pipenv run python xxx.py
在不激活环境的情况下用以该环境运行脚本
$ pipenv install flask
也可以在安装第三方库之前,打开Pipfile修改一下里面的url
为国内阿里云第三方库地址:
https://mirrors.aliyun.com/pypi/simple
[[source]]
name = "pypi"
url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true[dev-packages][packages]
flask = "*"[requires]
python_version = "3.7"
安装flask
$ pipenv graph
可以看出我们安装了一个Flask的同时,安装了它的4个依赖,其中Jinja2也安装了它的一个依赖
也可以使用pipenv shell
进入虚拟环境后使用pip list
查看环境
编写一个简单的flask脚本进行测试
app.py
from flask import Flask
app = Flask(__name__)@app.route('/')def index():
return '<h1>Hello Pipenv</h1>'
在一个新的环境中,将代码和Pipfile复制过去
由于Pipfile里面没有所有子依赖包或者确定的版本,因此该安装可能会更新未指定模块的版本号。
$ pipenv install --dev
$ pipenv run flask run
开发环境和生产环境稍微有点区别,开发环境中可能有一些不稳定的版本或依赖,而生产环境一般都比较固定
如果想只安装在开发环境才使用的包:
$ pipenv install <第三方库> --dev
运行以下命令,把当前环境的模块lock住, 它会更新Pipfile.lock文件,该文件是用于生产环境的,不应该人为编辑它。
$ pipenv lock
然后只需要把代码
和Pipfile.lock
放到生产环境,运行下面的代码,就可以创建和开发环境一样的环境,Pipfile.lock里记录了所有包和子依赖包的确切版本,因此是确定构建:
$ pipenv install --ignore-pipfile
$ pipenv uninstall flask
当前虚拟环境目录
$ pipenv --venv
当前项目根目录
$ pipenv --where
检查安全性和PEP508
$ pipenv check
所以可以直接通过将Pipfile加入到版本管理来进行环境的管理
至于Pipfile.lock是否要加入就看具体需求了