skynet development for mac
大型分布式监控软件-skynet
Python Dev
在Mac下面通过BrewHome来安装Python Dev环境,安装完成之后,调整系统环境变量,由于Mac Terminal我试用了(oh my zsh)[https://www.itweet.cn/2016/04/11/macbook-pro-conf/]所以用户环境变量修改`~/.zshrc`文件,在此文件末尾添加如下一行1
export PATH=/usr/local/bin:/usr/local/sbin:$PATH
接下来可以开始安装Python 2.7:1
brew install python # 可通过brew info python查看详细版本信息,默认安装最新的版本
或者安装Python 3.0:1
brew install python3 # 可通过brew info python查看详细版本信息,默认安装最新的版本
耗时大概几分钟,即可安装完成!
Setuptools & Pip,Homebrew会自动安装好Setuptools和 pip 。 Setuptools提供 easy_install 命令,实现通过网络(通常Internet)下载和安装第三方Python包。 还可以轻松地将这种网络安装的方式加入到自己开发的Python应用中。
pip 是一款方便安装和管理Python 包的工具, 在一些方面 , 它更优于 easy_install ,故更推荐它。
根据安装完成信息,提示执行如下升级Setuptools & Pip版本:1
2
3pip install --upgrade pip setuptools # python 2.7
pip3 install --upgrade pip setuptools # python 3.0
pip && python1
2
3
4
5➜ ~ pip --version
pip 8.1.2 from /usr/local/lib/python2.7/site-packages (python 2.7)
➜ ~ python --version # 默认Mac自带 Python 2.7.10,没有自带Setuptools & Pip
Python 2.7.11
Phthon 虚拟环境(Virtual Environment)
虚拟环境工具(virturalenv)通过为不同项目创建专属的Python虚拟环境,以实现其依赖的库独立保存在不同的路径。 这解决了“项目X依赖包版本1.x,但项目Y依赖包版本为4.x”的难题,并且维持全局的site-packages目录干净、易管理。
举个例子,通过这个工具可以实现依赖Django 1.3的项目与依赖Django 1.0的项目共存。
进一步了解与使用请参考文档 Virtual Environments。
Python编辑器
虚拟环境工具(virturalenv)构建
1 | pip install virtualenv |
在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对skynet这个应用创建的,符合我们的初衷。
退出当前venv环境,此时就回到了正常的环境,现在pip或python均是在系统Python环境下执行。
1 | deactivate |
完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。
小结: virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。
gRPC
- gRPC
github releases版本为Protocol Buffers v3.0.0-GA,通过brew安装protocol,可以安装开发者版本3.0.0-beta-21
2
3
4
5
6
7
8
9
10➜ ~ brew info protobuf
protobuf: stable 2.6.1 (bottled), devel 3.0.0-beta-2, HEAD
Protocol buffers (Google's data interchange format)
# brew安装出现timeout,翻墙也无法解决,通过github下载提供的macos二进制包,配环境变量即可
➜ ~ brew install --devel protobuf
➜ ~ pip install grpcio
➜ ~ pip install grpcio-tools
➜ ~ pip install psutil
Download the example1
2
3
4$ # Clone the repository to get the example code:
$ git clone https://github.com/grpc/grpc
$ # Navigate to the "hello, world" Python example:
$ cd grpc/examples/python/helloworld
Try it!
Run the server
1
$ python2.7 greeter_server.py &
Run the client
1
$ python2.7 greeter_client.py # 返回结果“Greeter client received: Hello, you!”
Run Codegen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55$ tree
.
├── protos
│ └── helloworld.proto
└── run_codegen.py
$ cat protos/helloworld.proto
syntax = "proto3";
option java_multiple_files = true;
option java_package = "io.grpc.examples.helloworld";
option java_outer_classname = "HelloWorldProto";
option objc_class_prefix = "HLW";
package helloworld;
// The greeting service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
$ cat run_codegen.py
"""Runs protoc with the gRPC plugin to generate messages and gRPC stubs."""
from grpc.tools import protoc
protoc.main(
(
'',
'-I./protos',
'--python_out=.',
'--grpc_python_out=.',
'./protos/helloworld.proto',
)
)
$ python run_codegen.py
$ tree
.
├── helloworld_pb2.py
├── protos
│ └── helloworld.proto
└── run_codegen.py
rrdtool ubuntu install
- http://martybugs.net/linux/rrdtool/
- apt-get install librrds-perl rrdtool
influxdb for ubuntu
psutil
- pip install psutil –trusted-host pypi.douban.com
influxdb
- pip install influxdb –trusted-host mirrors.aliyun.com
jinja2 or Mako
Atlas
FAQ
- gRPC 安装失败,因为Google被墙的问题,访问
googlemock.googlecode.com
timed out,翻墙解决.