支持应用程序和plaftorm之间显式契约的工具
ep的Python项目详细描述
[![构建状态](https://travis ci.org/txels/ep.svg)(https://travis ci.org/txels/ep)
[![代码运行状况](https://landscape.io/github/txels/ep/master/landscape.svg)(https://landscape.io/github/txels/ep/master)
[![我能用python 3吗?](https://caniusepython3.com/check/00276696-d27c-46f0-b10e-0c7bd684f786.svg)(https://caniusepython3.com/check/00276696-d27c-46f0-b10e-0c7bd684f786)
应用程序与
平台之间的契约(https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_corrution_resistance_explicit_contract s),
`ep`旨在提供一种可重用的机制来覆盖该契约。
概括来说,heroku的契约基于:
ment:声明为代码库的一部分
-procfile:作为指定应该运行什么的机制
-web进程绑定到$port(外部提供的环境变量
-stdout用于日志
-环境中的资源句柄:用于配置的环境变量,尤其是
ula用于连接外部资源
合同的细节是通过配置文件指定的,该配置文件位于应用程序存储库的根目录下。此配置文件
采用yaml格式,默认情况下称为"ep.yml"。
` ep的目标是至少覆盖
以下内容:
-`python`:通过pip安装需求文件。默认为根文件夹
-`node`:via npm install of a package file。默认为'package.json'
根目录
>;这里的根目录指的是'ep.yml'所在的目录。
>;未来的扩展可能包括ruby gems、bower包,甚至在某些操作系统上的操作系统级包
` ep`:
-工具将能够安装的那些
-工具将只验证但不尝试安装的那些。其中包括
例如,系统中的python版本
其中一些依赖项将具有其默认值。
这可能是"ep.yml"的部分示例。
``yaml
ep:1.0.0
依赖项:
-python
版本:2.7
文件:需求/运行时.txt
-npm
```
ep安装依赖项的命令是:
`ep`将始终在隔离环境中安装依赖项。这意味着
例如,python中的虚拟环境、本地npm安装等,"ep"将为您管理
此隔离环境的创建。
r/>
`ep`不强制您使用'procfile',但允许您定义run
命令:
``yaml
run:gunicorn myapp.wsgi
`````
>默认为在根目录中运行'procfile'。
``yaml
运行:
-echo"开始…"
-gunicorn myapp.wsgi
```
"ep.yml"文件提供了这些变量的明确定义,以及可选的默认值和帮助。
DEF错误:
``yaml
env:
port:
help:"Web应用程序将在其上运行的端口"
某些外部服务的URL:
help:"指向外部服务的URL blah。"
默认值:"http://localhost:9000"
````
`ep run`如果变量没有不提供默认值并拒绝运行。
至于"run",可以是单个字符串
或列表:
``yaml
检查:
-python-m unittest discover
-flake8 ep
````
###有些命令在ep的独立环境中运行命令。例如:
ep shell"pip list"
[![代码运行状况](https://landscape.io/github/txels/ep/master/landscape.svg)(https://landscape.io/github/txels/ep/master)
[![我能用python 3吗?](https://caniusepython3.com/check/00276696-d27c-46f0-b10e-0c7bd684f786.svg)(https://caniusepython3.com/check/00276696-d27c-46f0-b10e-0c7bd684f786)
应用程序与
平台之间的契约(https://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_corrution_resistance_explicit_contract s),
`ep`旨在提供一种可重用的机制来覆盖该契约。
概括来说,heroku的契约基于:
ment:声明为代码库的一部分
-procfile:作为指定应该运行什么的机制
-web进程绑定到$port(外部提供的环境变量
-stdout用于日志
-环境中的资源句柄:用于配置的环境变量,尤其是
ula用于连接外部资源
合同的细节是通过配置文件指定的,该配置文件位于应用程序存储库的根目录下。此配置文件
采用yaml格式,默认情况下称为"ep.yml"。
` ep的目标是至少覆盖
以下内容:
-`python`:通过pip安装需求文件。默认为根文件夹
-`node`:via npm install of a package file。默认为'package.json'
根目录
>;这里的根目录指的是'ep.yml'所在的目录。
>;未来的扩展可能包括ruby gems、bower包,甚至在某些操作系统上的操作系统级包
` ep`:
-工具将能够安装的那些
-工具将只验证但不尝试安装的那些。其中包括
例如,系统中的python版本
其中一些依赖项将具有其默认值。
这可能是"ep.yml"的部分示例。
``yaml
ep:1.0.0
依赖项:
-python
版本:2.7
文件:需求/运行时.txt
-npm
```
ep安装依赖项的命令是:
`ep`将始终在隔离环境中安装依赖项。这意味着
例如,python中的虚拟环境、本地npm安装等,"ep"将为您管理
此隔离环境的创建。
r/>
`ep`不强制您使用'procfile',但允许您定义run
命令:
``yaml
run:gunicorn myapp.wsgi
`````
>默认为在根目录中运行'procfile'。
``yaml
运行:
-echo"开始…"
-gunicorn myapp.wsgi
```
"ep.yml"文件提供了这些变量的明确定义,以及可选的默认值和帮助。
DEF错误:
``yaml
env:
port:
help:"Web应用程序将在其上运行的端口"
某些外部服务的URL:
help:"指向外部服务的URL blah。"
默认值:"http://localhost:9000"
````
`ep run`如果变量没有不提供默认值并拒绝运行。
至于"run",可以是单个字符串
或列表:
``yaml
检查:
-python-m unittest discover
-flake8 ep
````
###有些命令在ep的独立环境中运行命令。例如:
ep shell"pip list"