導航:首頁 > 源碼編譯 > golang項目源碼下載

golang項目源碼下載

發布時間:2023-02-25 01:32:44

linux下怎麼安裝Go開發環境

一、Go安裝使用

1、下載Go源碼
https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz

上傳到/usr/local/src目錄下

2、編譯安裝Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/

#註:必須使用root賬戶或者使用sudo來解壓縮Go源碼包

3、設置PATH環境變數,添加/usr/local/go/bin到環境變數
export PATH=$PATH:/usr/local/go/bin

4、安裝到自定義位置

Go二進制文件默認安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設置正確的環境變數。

例如,安裝Go到家目錄下,必須添加環境變數到$HOME/.profile
export GOROOT=$HOME/go

export PATH=$PATH:$GOROOT/bin

註:安裝Go到其他目錄時,GOROOT必須設置為環境變數

5、檢查是否正確安裝程序

通過設置一個工作區和建立一個簡單的程序,檢查是否正確安裝了一個簡單的程序。創建一個目錄包含您的工作空間,例如/data/work,並設置GOPATH環境變數指向的位置。
export GOPATH=/data/work

#如果不存在/data/work,需要新建

然後,在你的工作內創建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}

#使用go編譯hello.go
go install github.com/user/hello

#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區內,執行下面命令,會得到輸出結果。
$GOPATH/bin/hello

hello,world!

#當出現hello,world!表明Go已經安裝成功可以工作。

二、Go工作區介紹

1、機構組織代碼概述

Go語言程序通常將所有的代碼保存在一個工作區中。

工作區包含許多版本控制庫(由Git管理)。

每個存儲庫包含一個或多個包。

每個包由一個或多個在一個目錄中的源文件組成。

一個包的目錄的路徑決定其導入路徑。

註:同於其他的編程環境中,每一個項目都有一個獨立的工作區且工作區是緊密聯系在一起的版本控制庫。

2、工作區介紹

工作區是一個目錄層次結構,它的根目錄有三個目錄:

src 包含Go源文件

pkg 包含對象和包

bin 包含可執行命令
Go工具創建源碼包並安裝二進制文件到pkg和bin目錄下
src目錄通常包含多個版本控制庫(如Git或Mercurial),跟蹤一個或多個源包的開發。
下面展示一個好的工作區的例子:
bin/
hello # command executable
outyet # command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a # package object
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...

上面的屬性圖展示了一個包含兩個存儲庫(example和image)的工作區,example 存儲庫包含兩個命令(hello,outyet),image庫包含bmp包和幾個其他的包。

一個典型的工作區包含包含許多軟體包和命令的多個源庫。大多數程序員將所有的源代碼和依賴關系保存在一個工作區中

3、GOPATH環境變數設置

GOPATH環境變數指定工作區的位置。它很可能是唯一的環境變數,代碼開發時需要設置。

開始,創建一個工作區目錄並設置相應的gopath。您的工作區可以位於任何你喜歡的地方,但我們將在這個文檔中使用/data/work。請注意,這不能是您的「Go安裝」路徑相同。
mkdir -p /data/work

export GOPATH=/data/work

為了方便。添加工作區的bin到PATH中
export PATH=$PATH:$GOPATH/bin

4、導入路徑

一個導入路徑是唯一標識一個包的字元串。一個包的導入路徑對應於它在工作區內或遠程存儲庫中的位置。

從標准庫的軟體包中給出了短的導入路徑等。對於您自己的包,您必須選擇不可能和未來添加到標准庫或其他外部庫的基礎路徑沖突的路徑。

注意,你不需要將你的代碼發布到一個遠程存儲庫之前,你可以建立它。這只是一個很好的習慣來組織你的代碼,如果你有一天會出版它。在實踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標准庫和更大的去生態系統。

我們將使用github.com/user作為我們的基本路徑。在您的工作區中創建一個目錄,以保持源代碼:
mkdir -p $GOPATH/src/github.com/user

5、第一個項目

編譯並運行一個簡單的程序,首先選擇一個包的路徑(我們將使用github.com/user/hello)和創建在您的工作區相應的軟體包目錄:
mkdir $GOPATH/src/github.com/user/hello

創建名叫hello.go的文件,上面創建過,此處略過。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello

或者:
hello

如果你使用的是一個源代碼管理系統,現在是一個很好的時間來初始化一個存儲庫,添加文件,並提交你的第一次更改。再次,這一步是可選的:您不需要使用源代碼管理來寫代碼。
cd $GOPATH/src/github.com/user/hello

git init

Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/

git add hello.go

git commit -m "first commit"

[master (root-commit) bbfb477] first commit

6、first library

mkdir $GOPATH/src/github.com/user/stringutil

下一步,在目錄下創建一個名為reverse.go文件中有下列內容:
// Package stringutil contains utility functions for working with strings.

package stringutil

// Reverse returns its argument string reversed rune-wise left to right.

func Reverse(s string) string {

r := []rune(s)

for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {

r[i], r[j] = r[j], r[i]

}

return string(r)

}

使用go build測試包的編譯
$ go build github.com/user/stringutil

如果當前位置源碼包目錄,只需要:
go build

上面操作並不會產生一個輸出文件,必須使用go install,把包和對象輸出到工作去的pkg目錄內

確認stringutil包創建完成後,修改原始hello.go,使用stringutil包:
package main

import (

"fmt"

"github.com/user/stringutil"

)

func main() {

fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))

}

無論使用go安裝包還是二進制文件,所有相關的依賴都會自動安裝。所以當你安裝hello程序時:
$ go install github.com/user/hello

對應的stringutil包會自動安裝好。

執行新的hello程序,可以看到消息已經被反轉
# hello

Hello, Go!

完成上面操作之後,工作區應該為:
├── bin

│ └── hello # command executable

├── pkg

│ └── linux_amd64 # this will reflect your OS and architecture

│ └── github.com

│ └── user

│ └── stringutil.a # package object

└── src

└── github.com

└── user

├── hello

│ └── hello.go # command source

└── stringutil

└── reverse.go # package source

注意:go install會把庫文件stringutil.a放到pkg/linux_amd64下邊(目錄結構跟源代碼結構一樣)。這樣可以go命令可以直接找到對應的包對象,避免不必要的重復編譯。linux_amd64是為了根據操作系統和你的系統架構交叉編譯。

所有Go可執行程序都通過靜態方式鏈接在一起,所以在運行時是不需要相關的包對象(庫)。

7、包命令

所有的Go源代碼都以下面的語句開始:
package name

其中name就是包引用默認的名稱,一個包中的所有文件必須使用同一個包名,可執行命令必須是main。

一個二進制文件下所有的包名不需要唯一,但是引用路徑必須唯一

8、測試

Go自帶了一個輕量級的測試框架,由go test和testing包組成。

可以通過新建xx_test.go寫一個測試,其中包含若干個TestXXX函數。測試框架會自動執行這些函數;如果函數中包含tError或t.Fail, 對應的測試會被判為失敗。

添加一個針對stringutil的測試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內容:
package stringutil

import "testing"

func TestReverse(t *testing.T) {

cases := []struct {

in, want string

}{

{"Hello, world", "dlrow ,olleH"},

{"Hello, 世界", "界世,olleH"},

{"", ""},

}

for _, c := range cases {

got := Reverse(c.in)

if got != c.want {

t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)

}

}

}

#通過go test測試
# go test github.com/user/stringutil

ok github.com/user/stringutil 0.002s

#同樣的,在包文件夾下可以忽略路徑而直接執行go test
[root@zabbix stringutil]# go test

PASS

ok github.com/user/stringutil 0.002s

9、遠程包

包的引用路徑用來描述如何通過版本控制系統獲取包的源代碼。go工具通過引用路徑自動從遠程代碼倉庫獲取包文件。比如本文中用的例子也對應的保存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接獲取、生成、安裝對應的包。
[root@zabbix ~]# go get github.com/golang/example/hello

[root@zabbix ~]# $GOPATH/bin/hello

Hello, Go examples!

如果工作區中不存在對應的包,go會將對應的包放到GOPATH環境變數指明的工作區下。(如果包已經存在,go跳過代碼拉去而直接執行go install)
建議詳細看一下http://www.linuxprobe.com/set-go-env.html這個,有圖文

㈡ 如何編譯arm linux的go

Golang也就是Go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後Google強大靠山什麼的就不多說了。Golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布ARM平台的二進制安裝包。ARM平台沒辦法直接從官網下載二進制安裝包來安裝,好在Golang是支持多平台並且開源的語言,因此可以通過直接在ARM平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設置Golang編譯環境變數、編譯、配置Golang行環境變數等步驟。
註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。

1、編譯工具配置
據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:
1.1 在Ubuntu或Debian平台上可以使用sudo apt-get install gcc libc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。
1.2 在RedHat或CentOS 6平台上可以使用sudo yum install gcc libc-devel命令安裝。
安裝完成後可以輸入 gcc --version命令驗證是否成功安裝。

2、獲取golang源代碼
2.1 直接從官網下載源代碼壓縮包。
golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:https://storage.googleapis.com/golang/go1.4.1.src.tar.gz
2.2 使用git工具獲取。
golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。
2.2.1 首先確認ARM平台上已經安裝了git工具,可以使用git --version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:http://git-scm.com/download/linux
2.2.2 克隆遠程golang的git倉庫到本地
在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:
git clone https://go.googlesource.com/go
大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:
git clone https://github.com/golang/go.git
視網路情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆= =
下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cd go命令進入該目錄。
執行下面命令檢出go1.4.1版本的源代碼,因為現在已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:
git checkout go1.4.1
至此,最新1.4.1發行版的源代碼獲取完畢

3、設置golang的編譯環境變數
主要有GOROOT、GOOS、GOARCH、GOARM四個環境變數需要設置,先解釋四個環境變數的意義。
3.1 GOROOT
主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變數,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設置為go目錄的路徑。
3.2 GOOS和GOARCH
分別代表編譯的目標系統和平台,可選值如下:

GOOS GOARCH
darwin 386
darwin amd64
dragonfly 386
dragonfly amd64
freebsd 386
freebsd amd64
freebsd arm
linux 386
linux amd64
linux arm
netbsd 386
netbsd amd64
netbsd arm
openbsd 386
openbsd amd64
plan9 386
plan9 amd64
solaris amd64
windows 386
windows amd64
需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設置為linux,GOARCH設置為arm。
3.3 GOARM
表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。
總結下來,在樹莓派上設置golang的編譯環境變數,可編輯$HOME/.bashrc文件,在末尾添加下面內容:
export GOROOT=你的go目錄路徑
export GOOS=linux
export GOARCH=arm
編輯完後保存,執行source ~/.bashrc命令讓修改生效。

4、編譯源代碼
環境變數配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬體情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。

5、配置golang運行環境變數
編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到PATH環境變數中。同樣編輯~/.bashrc文件,因為前面設置過GOROOT環境變數指向go目錄了,所以只需要在末尾加上
export PATH=$PATH:$GOROOT/bin
保存後同樣執行source ~/.bashrc命令讓環境變數生效。

至此,golang源代碼編譯安裝成功。執行go version應該就能看到當前golang的版本信息,表示編譯安裝成功。

㈢ Golang database/sql源碼分析

Gorm是Go語言開發用的比較多的一個ORM。它的功能比較全:

但是這篇文章中並不會直接看Gorm的源碼,我們會先從database/sql分析。原因是Gorm也是基於這個包來封裝的一些功能。所以只有先了解了database/sql包才能更加好的理解Gorm源碼。

database/sql 其實也是一個對於mysql驅動的上層封裝。」github.com/go-sql-driver/mysql」就是一個對於mysql的驅動,database/sql 就是在這個基礎上做的基本封裝包含連接池的使用

下面這個是最基本的增刪改查操作

操作分下面幾個步驟:

因為Gorm的連接池就是使用database/sql包中的連接池,所以這里我們需要學習一下包里的連接池的源碼實現。其實所有連接池最重要的就是連接池對象、獲取函數、釋放函數下面來看一下database/sql中的連接池。

DB對象

獲取方法

釋放連接方法

連接池的實現有很多方法,在database/sql包中使用的是chan阻塞 使用map記錄等待列表,等到有連接釋放的時候再把連接傳入等待列表中的chan 不在阻塞返回連接。

之前我們看到的Redigo是使用一個chan 來阻塞,然後釋放的時候放入空閑列表,在往這一個chan中傳入struct{}{},讓程序繼續 獲取的時候再從空閑列表中獲取。並且使用的是鏈表的結構來存儲空閑列表。

database/sql 是對於mysql驅動的封裝,然而Gorm則是對於database/sql的再次封裝。讓我們可以更加簡單的實現對於mysql資料庫的操作。

㈣ 如何到載百度網議

不久之前,機器之心聯合網路推出 PaddlePaddle 專欄,為想要學習這一平台的技術人員推薦相關教程與資源。在解析過PaddlePaddle框架之後,從這篇文章開始上手,安裝 PaddlePaddle。
目錄
環境
Windows 系統的安裝
在 Windows 上安裝 Docker 容器在 Windows 上安裝 Ubuntu
使用 pip 安裝
使用 Docker 安裝
從源碼編譯生成安裝包
在本地編譯生成安裝包在 Docker 編譯生成安裝包
編譯 Docker 鏡像
測試安裝環境
最後提示
項目代碼
參考資料
環境
系統:Ubuntu 16.0.4(64 位)處理器:Intel(R) Celeron(R) CPU內存:8G
Windows 系統的安裝
PaddlePaddle 目前還不支持 Windows,如果讀者直接在 Windows 上安裝 PaddlePaddlePaddle 的話,就會提示沒有找到該安裝包。如果讀者一定要在 Windows 上工作的話,筆者提供兩個建議:一、在 Windows 系統上使用 Docker 容器,在 Docker 容器上安裝帶有 PaddlePaddle 的鏡像;二、在 Windows 系統上安裝虛擬機,再在虛擬機上安裝 Ubuntu。
在 Windows 上安裝 Docker 容器
首先下載 Docker 容器的工具包 DockerToolbox,筆者使用這個安裝包不僅僅只有 Docker,它還包含了 VirtualBox 虛擬機,使用者工具包我們就不用單獨去安裝 VirtualBox 虛擬機了,DockerToolbox 的官網下載地址:https://docs.docker.com/toolbox/toolbox_install_windows/
下載之後,就可以直接安裝了,雙擊安裝包,開始安裝

選擇安裝路徑,筆者使用默認的安裝路徑

然後安裝所依賴的軟體,因為筆者之前在電腦上已經安裝了 git,所以在這里就不安裝了,其他都要勾選

這一步不用修改什麼,讓程序為我們創建一個桌面快捷鍵

最後就可以安裝了,等待一小段時間即可

到這里就安裝完成了

安裝完成之後,如果直接啟動 Docker 的話,有可能可能會卡在這里,因為還有下載一個 boot2docker.iso 鏡像,網速比較慢的話就可能一直卡在這里。所以我們還要鏡像下一步操作

Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v17.12.1-ce
(default) Downloading C:\Users\15696\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v17.12.1-ce/boot2docker.iso...
在下載 DockerToolbox 的時候,這個工具就已經帶有 boot2docker.iso 鏡像了。並且存在 DockerToolbox 安裝的路徑上,筆者的路徑是:
C:\Program Files\Docker Toolbox\boot2docker.iso
我們把這個鏡像復制到用戶目錄\.docker\machine\cache\,如筆者的目錄如下:

C:\Users\15696\.docker\machine\cache\
復制完成之後,雙擊桌面快捷方式 Docker Quickstart Terminal,啟動 Docker,命令窗口會輸出以下信息:

Running pre-create checks...
Creating machine...
(default) Copying C:\Users\15696\.docker\machine\cache\boot2docker.iso to C:\Users\15696\.docker\machine\machines\default\boot2docker.iso...
(default) Creating VirtualBox VM...
(default) Creating SSH key...
(default) Starting the VM...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to create a network adapter. Sometimes, such confirmation window is minimized in the taskbar.
(default) Found a new host-only adapter: "VirtualBox Host-Only Ethernet Adapter #3"
(default) Windows might ask for the permission to configure a network adapter. Sometimes, such confirmation window is minimized in the taskbar.
(default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.

(default) Waiting for an IP...
最後看到 Docker 的 logo 就表示成功安裝 Docker 容器了

## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
Start interactive shell
15696@ MINGW64 ~
$
到這就可以使用 Docker 來安裝 PaddlePaddle 了,具體請看本文章中關於 Docker 使用 PaddlePaddle 部分
在 Windows 上安裝 Ubuntu
在 Windows 上在 Ubuntu 就要先安裝虛擬機,虛擬機有很多,筆者使用的是開源的 VirtualBox 虛擬機,VirtualBox 的官網:https://www.virtualbox.org/
安裝完成 VirtualBox 虛擬機之後,進入到 VirtualBox 虛擬機中點擊新建,創建一個系統

選擇分配的內存,我這里只是分配了 2G,如果正式使用 PaddlePaddle 訓練模型,這遠遠不夠,讀者可以根據需求分配內存

創建一個虛擬硬碟

選擇默認的 VDI 硬碟文件類型

這里最好是選擇動態分配硬碟,這樣虛擬機會根據實際佔用的空間大小使用電腦本身的磁碟大小,這樣會減少電腦空間的佔用率的。如果是固定大小,那麼創建的虛擬機的虛擬硬碟一開始就是用戶設置的大小了。

這里就是選擇虛擬硬碟大小的,最後分配 20G 以上,筆者分配 30G,應該夠用。

然後選擇剛才創建的 Ubuntu 系統,點擊設置,這系統中取消勾選軟碟機,然後點擊存儲,選擇 Ubuntu 鏡像,筆者使用的是 64 位 Ubuntu 16.04 桌面版的鏡像

最後就可以啟動安裝 Ubuntu 了。選擇我們創建的 Ubuntu 系統,點擊啟動,進入到開始安裝界面,為了方便使用,筆者選擇中文版的

為了安裝之後不用在安裝和更新應用,筆者勾選了安裝 Ubuntu 時下載更新,這樣在安裝的時候就已經更新應用了

然後是選安裝的硬碟,因為我們使用的自己創建的整一個硬碟,所以我們可以直接選擇青春整個硬碟並安裝 Ubuntu,這里就不用考慮分區和掛載問題了

選擇所在的位置,這沒什麼要求的,筆者隨便選擇一個城市

然後是選擇鍵盤的布局,通常的鍵盤布局都是英語(美國)

創建 Ubuntu 的用戶名稱和密碼

最後就是安裝了,這個安裝過程可能有點久,耐心等待

安裝完成之後就可以在 Windows 系統上使用 Ubuntu 系統了,我們再使用 Ubuntu 來學習和使用 PaddlePaddle 做深度學習了。最好安裝完成之後,把在存儲中設置的 Ubuntu 鏡像移除

在本篇文章之後部分都是在 Ubuntu 上操作,我們都可以使用 Ubuntu 這虛擬機來完成。
如果讀者使用的是 Windows 10,可以使用 Windows 系統自帶的 Linux 子系統,安裝教程可以看我之前的文章 Windows10 安裝 Linux 子系統。
使用 pip 安裝
如果你還沒有在 pip 命令的話,首先要安裝 pip,要確保安裝的 pip 版本是大於 9.0.0 的,否則可能無法安裝 paddlepaddle。
安裝 pip 命令如下:

sudo apt install python-pip
安裝之後,還有看一下 pip 的的版本 pip --version,如果版本低於 9.0.0,那要先升級 pip,先要下載一個升級文件,命令如下:

wget https://bootstrap.pypa.io/get-pip.py
下載完成之後,可以使用這個文件安裝最新的 pip 了

python get-pip.py
安裝 pip 就可以動手安裝 paddlepaddle 了。如果許可權不夠,請在 root 下執行命令
pip install paddlepaddle
現在就測試看看 paddlepaddle 有沒有,在 python 的命令終端中試著導入 paddlepaddle 包:

import paddle.v2 as paddle
如果沒有報錯的話就證明 paddlepaddle 安裝成功了。
使用 Docker 安裝
為什麼要使用 Docker 安裝 paddlepaddle 呢,Docker 是完全使用沙箱機制的一個容器,在這個容器安裝的環境是不會影響到本身系統的環境的。通俗來說,它就是一個虛擬機,但是它本身的性能開銷很小。在使用 Docker 安裝 paddlepaddle 前,首先要安裝 Docker,通過下面的命令就可以安裝了:

sudo apt-get install docker
安裝完成之後,可以使用 docker --version 查看 Docker 的版本,如果有顯示,就證明安裝成功了。可以使用 docker images 查看已經安裝的鏡像。
一切都沒有問題之後,就可以用 Docker 安裝 paddlepaddle 了,命令如下:

docker pull docker.paddlepaddlehub.com/paddle
在這里不得不說的是,這個安裝過程非常久,也許是筆者的帶寬太小了。安裝完成後,可以再使用 docker images 命令查看安裝的鏡像,應該可以 看到類似這樣一個鏡像,名字和 TAG 會相同,其他信息一般不同

docker.paddlepaddlehub.com/paddle latest 2b1ae16d846e 27 hours ago 1.338 GB
從源碼編譯生成安裝包
我們的硬體環境都有很大的不同,官方給出的 pip 安裝包不一定是符合我們的需求,比如筆者的電腦是不支持 AVX 指令集的,在官方中沒找到這個的安裝包(也行現在已經有了),所以我們要根據自己的需求來打包一個自己的安裝包。
在本地編譯生成安裝包
1. 安裝依賴環境
在一切開始之前,先要安裝好依賴環境,下面表格是官方給出的依賴環境

1.1 安裝 GCC
一般現在的 Ubuntu 都是高於個版本了,可以使用 gcc --version 查看安裝的版本。比如筆者的是 4.8.4,如果你的是版本是低於 4.8.2 的就要更新一下了

sudo apt-get install gcc-4.9
1.2 安裝 CMake
先要從官網下 CMake 源碼
wget https://cmake.org/files/v3.8/cmake-3.8.0.tar.gz
解壓源碼

tar -zxvf cmake-3.8.0.tar.gz
依次執行下面的代碼

# 進入解壓後的目錄
cd cmake-3.8.0
# 執行當前目錄的 bootstrap 程序
./bootstrap
# make 一下
make
# 開始安裝
sudo make install
查看是否安裝成功,cmake --version,如果正常顯示版本,那已經安裝成功了。
1.3 安裝 pip
關於安裝 pip9.0.0 以上的版本,在上面的使用 pip 安裝部分已經講了,這里就不在熬述了
1.4 安裝 numpy
安裝 numpy 很簡單,一條命令就夠了

sudo apt-get install python-numpy
順便多說一點,matplotlib 這個包也經常用到,順便安裝一下

sudo apt-get install python-matplotlib
1.5 安裝 SWIG
執行下面代碼安裝 SWIG,安裝成功之後,使用 swig -version 檢查安裝結果

sudo apt-get install -y git curl gfortran make build-essential automake swig libboost-all-dev
1.6 安裝 Go
官方說可選擇,那看情況吧,如果像安裝安裝吧,筆者順便安裝了,就一條代碼的事情,老規則 go version

sudo apt-get install golang
到這里,依賴環境就已經安裝好了,准備安裝 paddlepaddle。
2. 首先要在 GitHub 上獲取 paddlepaddle 源碼

git clone https://github.com/PaddlePaddle/Paddle.git
3. 然後輸以下命令

# 進入剛下載的 Paddle 裡面
cd Paddle
# 創建一個 build 文件夾
mkdir build
# 進入 build 文件夾里
cd build
# 這就要選好你的需求了,比如筆者沒有使用 GPU,不支持 AVX,為了節省空間,我把測試關閉了,這樣會少很多空間。最後不要少了..
cmake .. -DWITH_GPU=OFF -DWITH_AVX=OFF -DWITH_TESTING=OFF
# 最後 make,生成你想要的安裝包,這個可能很久, 一定要有耐心
make
經過長久的 make 之後,終於生成了我們想要的安裝包,它的路徑在 Paddle/build/python/dist 下,比如筆者在該目錄下有這個安裝包 paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl,你的命名可能不是這個。之後就可以安裝了,使用 pip 安裝:

# 請切入到該目錄
cd build/python/dist/
# 每個人的安裝包名字可能不一樣。如果許可權不夠,請在 root 下執行命令

pip install paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl
這個我們就已經安裝了 paddlepaddle,現在就測試看看 paddlepaddle 有沒有安裝成功了,在 python 的命令終端中試著導入 paddlepaddle 包:

import paddle.v2 as paddle
如果沒有報錯的話就證明 paddlepaddle 安裝成功了。
在 Docker 編譯生成安裝包
使用 Docker 就輕松很多了,有多輕松,看一下便知 。
1. 首先要在 GitHub 上獲取 paddlepaddle 源碼

git clone https://github.com/PaddlePaddle/Paddle.git
2. 切入到項目的根目錄下

cd Paddle
3. 生成安裝包
下面一行代碼,提醒一下,這個過程非常長,一定要有耐心,順便把編譯測試關了,減少空間

docker run -it -v $PWD:/paddle -e "WITH_GPU=OFF" -e "WITH_AVX=OFF" -e "-DWITH_TESTING=OFF" docker.paddlepaddlehub.com/paddle:latest-dev bash -x /paddle/paddle/scripts/docker/build.sh
同樣會在 Paddle/build/python/dist 下生成一個安裝包,這對比在本地生成的安裝包,是不是要簡單很多,沒錯這就是 Docker 強大之處,所有的依賴環境都幫我們安裝好了,現在只要安裝這個安裝包就行了:

# 請切入到該目錄
cd build/python/dist/
# 每個人的安裝包名字可能不一樣。如果許可權不夠,請在 root 下執行命令
pip install paddlepaddle-0.11.0-cp27-cp27mu-linux_x86_64.whl
同樣我們要測試看看 paddlepaddle 有沒有安裝成功了,在 python 的命令終端中試著導入 paddlepaddle 包:

import paddle.v2 as paddle
如果沒有報錯的話就證明 paddlepaddle 安裝成功了。
編譯 Docker 鏡像
如果你比較喜歡使用 Docker 來運行你的 paddlepaddle 代碼,但是有沒有你想要的鏡像,這是就要自己來製作一個 Docker 鏡像了,比如筆者的電腦是不支持 AVX 指令集的,還只有 CPU,那麼我就要一個不用 AVX 指令集和使用 CPU 訓練的鏡像。好吧,我們開始吧
1. 我們要從 GitHub 下載源碼:

git clone https://github.com/PaddlePaddle/Paddle.git
2. 安裝開發工具到 Docker image 里

# 切入到 Paddle 目錄下
cd Paddle
# 下載依賴環境並創建鏡像,別少了最後的.

docker build -t paddle:dev .
有可能它不能夠命名為 paddle:dev,我們可以對他從重新命名,ID 要是你鏡像的 ID

# docker tag <鏡像對應的 ID> <鏡像名:TAG>
例如:docker tag 1e835127cf33 paddle:dev
3. 編譯
# 這個編譯要很久的,請耐心等待

docker run --rm -e WITH_GPU=OFF -e WITH_AVX=OFF -v $PWD:/paddle paddle:dev
安裝完成之後,使用 docker images 查看剛才安裝的鏡像。
測試安裝環境
我們就使用官方給出的一個例子,來測試我們安裝 paddlepaddle 真的安裝成功了
1. 創建一個記事本,命名為 housing.py,並輸入以下代碼:

import paddle.v2 as paddle
# Initialize PaddlePaddle.
paddle.init(use_gpu=False, trainer_count=1)
# Configure the neural network.
x = paddle.layer.data(name='x', type=paddle.data_type.dense_vector(13))
y_predict = paddle.layer.fc(input=x, size=1, act=paddle.activation.Linear())
# Infer using provided test data.
probs = paddle.infer(
output_layer=y_predict,
parameters=paddle.dataset.uci_housing.model(),
input=[item for item in paddle.dataset.uci_housing.test()()])
for i in xrange(len(probs)):
print 'Predicted price: ${:,.2f}'.format(probs[i][0] * 1000)
2. 執行一下該代碼
在本地執行代碼請輸入下面的命令
python housing.py
在 Docker 上執行代碼的請輸入下面的代碼

docker run -v $PWD:/work -w /work -p 8899:8899 docker.paddlepaddle.org/paddle python housing.py
-v 命令是把本地目錄掛載到 docker 鏡像的目錄上,-w 設置該目錄為工作目錄,-p 設置埠號,使用到的鏡像是在使用 Docker 安裝部分安裝的鏡像 docker.paddlepaddle.org/paddle
3. 終端會輸出下面類似的日誌

I0116 08:40:12.004096 1 Util.cpp:166] commandline: --use_gpu=False --trainer_count=1
Cache file /root/.cache/paddle/dataset/fit_a_line.tar/fit_a_line.tar not found, downloading https://github.com/PaddlePaddle/book/raw/develop/01.fit_a_line/fit_a_line.tar
[==================================================]
Cache file /root/.cache/paddle/dataset/uci_housing/housing.data not found, downloading https://archive.ics.uci.e/ml/machine-learning-databases/housing/housing.data
[==================================================]
Predicted price: $12,316.63
Predicted price: $13,830.34
Predicted price: $11,499.34
Predicted price: $17,395.05
Predicted price: $13,317.67
Predicted price: $16,834.08

Predicted price: $16,632.04
如果沒有成功運行該代碼,報錯信息如下,說明安裝的 paddlepaddle 版本過低,請安裝高版本的 paddlepaddle

I0116 13:53:48.957136 15297 Util.cpp:166] commandline: --use_gpu=False --trainer_count=1
Traceback (most recent call last):
File "housing.py", line 13, in <mole>
parameters=paddle.dataset.uci_housing.model(),

AttributeError: 'mole' object has no attribute 'model'
最後提示
有很多學習者會出現明明安裝完成 PaddlePaddle 了,但是在 PaddlePaddle 的時候,在初始化 PaddlePaddle 這一行代碼出錯

paddle.init(use_gpu=False, trainer_count=1)
這個多數是讀者的電腦不支持 AVX 指令集,而在 PaddlePaddle 的時候,安裝的是支持 AVX 指令集的版本,所以導致在初始化 PaddlePaddle 的時候報錯。所以在安裝或者編譯 PaddlePaddle 安裝包時,要根據讀者電腦本身的情況,選擇是否支持 AVX 指令集。查看電腦是否支持 AVX 指令集,可以在終端輸入以下命令,輸出 Yes 表示支持,輸出 No 表示不支持。
if cat /proc/cpuinfo | grep -i avx; then echo Yes; else echo No; fi
項目代碼
GitHub 地址:https://github.com/yeyupiaoling/LearnPaddle
參考資料
http://paddlepaddle.org/
https://pip.pypa.io/en/stable/
http://www.runoob.com/
http://www.linuxidc.com/Linux/2016-12/138489.htm
https://www.jianshu.com/p/c6264cd5f5c7

㈤ Go語言的開源項目

1.Docker項目
網址為 https://github.com/docker/docker 。
介紹:Docker是一種操作系統層面的虛擬化技術,可以在操作系統和應用程序之間進行隔離,也可以稱之為容器。Docker可以在一台物理伺服器上快速運行一個或多個實例。例如,啟動一個Cent OS操作系統,並在其內部命令行執行指令後結束,整個過程就像自己在操作系統一樣高效。
2.golang項目
網址為 https://github.com/golang/go 。
介紹:Go語言的早期源碼使用C語言和匯編語言寫成。從Go 1.5版本自舉後,完全使用Go語言自身進行編寫。Go語言的源碼對了解Go語言的底層調度有極大的參考意義,建議希望對Go語言有深入了解的讀者讀一讀。
3.Kubernetes項目
網址為 https://github.com/kubernetes/kubernetes 。
介紹:Google公司開發的構建於Docker之上的容器調度服務,用戶可以通過Kubernetes集群進行雲端容器集群管理。
4.etcd項目
網址為 https://github.com/coreos/etcd 。
介紹:一款分布式、可靠的KV存儲系統,可以快速進行雲配置。
5.beego項目
網址為 https://github.com/astaxie/beego 。
介紹:beego是一個類似Python的Tornado框架,採用了RESTFul的設計思路,使用Go語言編寫的一個極輕量級、高可伸縮性和高性能的Web應用框架。
6.martini項目
網址為 https://github.com/go-martini/martini 。
介紹:一款快速構建模塊化的Web應用的Web框架。
7.codis項目
網址為 https://github.com/Codis Labs/codis。
介紹:國產的優秀分布式Redis解決方案。
8.delve項目
網址為 https://github.com/derekparker/delve 。
介紹:Go語言強大的調試器,被很多集成環境和編輯器整合。

㈥ golang 多人開發怎麼保證源碼安全

隨著PHP有著越來越深入的了解,以及遇到越來越多的不同業務時,使用PHP總會讓我有一種莫名的無力感。當然,並不是我一個人在使用PHP的時候遇到了問題。事實上,每個略微有一些經驗,接觸過一些需求的人都會有同樣的困惑。各種配合LAMP(或者LNMP?)架構的後端技術也因此被發明或被發現,進而整合到PHP的開發的技術體系中。從簡單的Memcached作為數據中轉,cron後端定時處理;到Gearman、RabbitMQ這些隊列神器;最近Laruence甚至封裝了利用libcurl的非同步特性實現並發RPC調用的yar擴展。幾乎整個社區都在尋找PHP的摩西之路。好吧,說了一大堆,回歸主題。之前我寫了一篇英文練筆《》,獲得不少國際友人的關注。排除拼寫和語法被他們詬病外,主要是有許多朋友覺得我沒把事情說清楚。所以這里我用母語重新聊聊這個事情,只是這些國際友人什麼時候能學會閱讀中文呢?;)Go或者Golang,是由Google支持的快速、一致、穩定的,有活躍的社區支持的開源編程語言。越來越多的應用選擇使用Golang進行構建。雖然RobPike說「…我們希望C++程序員來了解Go並作為一個可選的語言…」,不過我真得認為:PHPer應當學習Golang!接下來我們就來談談原因。容易學習PHP相當容易學習。Golang也是!在這點上,一群大老外對我的觀點進行了猛烈的抨擊。他們認為我羞辱了PHPer,說得好像只有簡單的東西PHPer才能學會一樣。但是,這難道不是事實嗎?或者換個說法:像我一樣的喜歡PHP的人,或多或少都會更喜歡簡單的東西。PHP的語法接近C族編程語言(C/C++/Java等等)。如果有這些語言的經驗,在第一次遇到PHP的時候立刻就能開始上手編寫代碼。在我看來,編寫PHP代碼或許更加考驗程序員的記憶力,而不是智力(當你面對各種不同風格的函數定義、各種擴展的特殊約定時,你一定會相當認同我的觀點)。Golang同樣是一個C族編程語言。呃,或者有一些不同吧。例如關鍵字「for」,功能上和PHP的接近,但是沒有括弧。條件語句「if」同樣無需括弧。可以閱讀EffectiveGo了解內容。Golang只有3025個關鍵字和47個操作符號、分隔符號或其他特殊標記。記住這些標記確實不需要什麼特別的努力。精巧的類型系統相當容易使用。實用的,具有方法的結構體類型代替了笨重的對象系統。介面的設計是Golang中我最喜歡的部分。當完成了《Go指南》的學習之後,利用PHP積累的經驗,立刻就可以開始使用Golang處理一些簡單的任務。容易使用PHP腳本是由SAPI組件進行解析執行的,如Web伺服器模塊、PHP-FPM或者CLI。部署PHP所需要的全部東西就是一個SAPI環境。配置這個環境對於新手來說可能是學習PHP過程中最為困難的部分。所有的Golang代碼會編譯和鏈接為本地碼。所以除了編譯環境,執行時無需再為其進行任何特別的部署。對比PHP環境的配置,這要簡單很多。你真得認為配置PHP環境很復雜嗎?我不覺得,真的!而配置Golang編譯環境比那還要簡單點。我確信已經有大量的Golang相關的書籍、文章介紹過如何進行編譯環境的配置了。為了更加清晰,我這里梳理一下思路。有三個步驟需要處理:下載Golang的源代碼;根據《[翻譯]Go環境設置》的提示設置環境變數;運行源代碼src目錄中的all.bash。或者一步到位:使用二進制包進行安裝。然後就會得到一個叫做「go」的工具集合。使用「go」工具和使用PHP的CLI工具一樣簡單。《[翻譯]go工具》對此進行了詳細的解釋。PHP的迷思如果一個編程語言容易學習和使用,我們是不是就應當學習它呢?有許多容易學習和使用的編程語言。難道要把它們都學一遍?答案是顯然的:NO!但是呢?只是因為它很酷!是的,我在開玩笑,但是這是真的。無論如何先從PHP自身談起吧。PHP「原本是為了開發動態的Web頁面而設計的伺服器端通用語言(Wikipedia)」。PHP一個重要的特性就是可以嵌入到HMTL中。代碼編寫在「」標簽內;HTML寫在標簽外。它有一個強大的擴展系統。擴展使用C調用ZendAPI編寫。數據的處理實際上要利用這些擴展完成。在我看來,PHP是世界上最好的模板語言。但是當積累了一些PHP的經驗,並且開始面對一些更加復雜的Web應用時,你一定會對PHP產生一種無力的感覺。它沒有內建的並行機制,沒有線程、進程(你真得認為那個簡陋的進程式控制制可以不加改造的用在高並發的生產環境?),或者其他某「程」。一個慢數據源可以阻塞整個頁面的處理。消息隊列、緩存、代理……系統開始不僅僅是PHP這么單純,還包括了許多服務和系統組件。這時,PHP只處理很少的業務邏輯,成為真正的模板語言了。PHPer們總是在尋找解決這一問題的法,如「PHPmultithread」或者PHPRPC並發框架。我很難說哪種會更好一些。不過我肯定你會需要選擇一些編程語言用於後端工作的開發。就我自己的經驗,我嘗試過C(一直在和malloc/free進行搏鬥)/Java(陷入到了jar地獄中)/Python(從來沒能做到Pythonic不說,還總是在錯誤的類型中打轉)……如果想要獲得性能,就得同內存管理進行搏鬥;如果用GC,就得部署和調優VM;當獲得便利性的時候,同時也是走在刀尖上,一個小錯誤就引起巨大的災難……每個都有優勢,同樣每個都有問題。好吧!現在回到Golang!Golang有GC,無需關心內存管理(或者可以用較少的精力去關注它)。代碼被編譯為本地碼,因此「cp」和「mv」就是部署Golang編寫的應用所需要的全部工具。噢,我剛才已經說過了,Golang是一個具有靜態類型系統的編譯語言。所以你沒有機會弄亂變數的類型。當然,PHPer應該學習Golang的一個重要原因是「轉到Go是因為他們並未放棄太多的表達能力,但是獲得了性能,並且與並發共舞(RobPike)」。《WhyNotGo?(英文)》對此進行了深入的分析。我可以分享一些我的經驗:有一個Gearman的worker用於處理後端數據。PHP通過其API連接到Gearman的JobServer向worker發起請求。最初worker是使用python編寫的(還有更加原始的版本,PHP的,但是你能想像它工作起來……唉,不說了……)。這個版本有許多的問題(是我們自己的問題,不關Python的事),但是至少它能工作。後來用Golang重寫了這個worker。為此我開發了Golang的GearmanAPI,並使用ZendAPI編寫了一個在Golang中執行PHP腳本的包。然後將它們放在一起:一個可以執行PHP的Gearmanworker。它已經工作了一段時間了,看起來還不錯!哦,受到Yar的啟發,這里還有一個Golang編寫的RPC合並器,用來合並PHP腳本中的RPC調用。現在還是個玩具,不過或許日後能用得著。這其實是將Golang的channel當作消息隊列來用。我在《Golang:有趣的channel應用》中對此有一些說明。世界真美好啊。謝謝Golang!無論如何,大多數PHPer在進行後端開發的時候都會需要學習一些其他語言。如果你正在尋找,或者已經嘗試了一些其他語言。為什麼不來試試Golang?它真得可以讓你的生活更加輕松和快樂。讓你可以有的時間陪伴你的家人和朋友,吃你愛吃的東西,去你想去的地方。貌似我還是沒說清楚啊?好吧,沒關系,在下個月的中國軟體開發者大會上再跟大家就這個話題做一個探討吧。

閱讀全文

與golang項目源碼下載相關的資料

熱點內容
和平精英蘋果轉安卓怎麼轉不了 瀏覽:52
偉福單片機實驗箱 瀏覽:154
廣東加密貨幣 瀏覽:216
利用python批量查詢系統 瀏覽:497
什麼app看左右臉 瀏覽:302
台灣小公主s解壓密碼 瀏覽:568
易語言鎖機軟體源碼 瀏覽:156
迅雷下載完成無法解壓 瀏覽:592
硬碟分區命令圖解 瀏覽:447
當前雲伺服器如何關閉 瀏覽:78
mac下python在哪 瀏覽:641
廣東惠州DNS伺服器地址 瀏覽:357
編譯影片時軟體渲染錯誤 瀏覽:625
流星蝴蝶劍解壓失敗 瀏覽:294
如何確認方舟編譯器 瀏覽:664
奶粉源箱源碼什麼意思 瀏覽:178
台州程序員兼職一般去哪些網站 瀏覽:408
舊版本怎麼下載到新的安卓 瀏覽:972
flash個人網站源碼下載 瀏覽:725
javasocketbyte 瀏覽:270