天天看點

《Python Web開發實戰》踩地雷記17/3/22

1.包管理

使用pip

> sudo apt-get install python-pip -yq

系統自帶的pip版本較低,可使用pip的自更新來更新

> sudo pip install pip -U -q #-q靜默安裝

建議經常更新

2.setuptools

Python包管理工具setuptools詳解

setuptools是Python distutils增強版的集合,它可以幫助我們更簡單的建立和分發Python包,尤其是擁有依賴關系的。使用者在使用setuptools建立的包時,并不需要已安裝setuptools,隻要一個啟動子產品即可。

安裝

> sudo apt-get install python-setuptools

腳本安裝

>wget http://peak.telecommunity.com/dist/ez_setup.py

sudo python ez_setup.py

如果是開源項目,建議使用類似下面的相容代碼

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup
           

3.entry_points

釋出的包經常需要一個或多個可執行的入口,以便使用者直接執行和調用。

這裡用flake8:

Flake8 runs all the tools by launching the single flake8 command

Flake8通過啟動單個flake8指令運作所有工具。

使用entry_points的優點,就是可以讓這些入口點能夠被其他Python程式動态發現包所提供的功能,但是對應的代碼的耦合度非常低。

坑:

>sudo apt-get update

時顯示

《Python Web開發實戰》踩地雷記17/3/22

運作

> sudo apt-get dist-upgrade

因為遇到了神奇巨坑,是以從頭來了一遍,這裡記錄一下詳細的過程

1.安裝VirtualBox

VirtualBox

2.使用Vagrant安裝

Vagrant,建立一個開發環境目錄,下載下傳需要的box,直接下載下傳比較慢,可以看這裡如何下載下傳Vagrant的Box,我發現用4G流量下載下傳比用校園網快多了。打開 VagrantFile,修改 config.vm.box 配置為本地檔案,将下載下傳的box放到開發環境目錄下,修改box的名字:

config.vm.box = "virtualbox.box"

之後就可以執行

> vagrant up

之後開始配置VagrantFile檔案,VagrantFile 原諒我還得用着谷歌翻譯才能看得懂

config.vm.provider "virtualbox" do |v|
  v.customize ["modifyvm", :id, "--name", "first1", "--memory", "2046"]
end
           

這行設定的意思是調用VBoxManage的modifyvm的指令,設定VM的名稱為first1,記憶體為2048MB。

設定hostname非常重要,因為當我們有很多台虛拟伺服器的時候,都是依靠hostname來做識别的

config.vm.network :forwarded_port, guest: , host: 
config.vm.network :forwarded_port, guest: , host: 
config.vm.network :forwarded_port, guest: , host: 
           

這幾句厲害了,forwarded_port用來設定端口轉發,“guest:9000,host:9000”表示通路本機9000端口的流量會轉發到虛拟機上的9000端口,反之亦然。例如你在你的虛拟機上使用nginx跑了一個Go應用,那麼你在host機器上的浏覽器中打開http://localhost:9000時,Vagrant就會把這個請求轉發到VM裡面跑在9000端口的nginx服務上。

設定Vagrant預設情況下SSH的使用者名。如果提供者檢測到更合适的使用者,則可以自由重寫。

設定了Vagrant将用來認證SSH使用者的密碼。

config.ssh.insert_key = false
           

如果true,Vagrant将自動插入用于SSH的密鑰對,以便在檢測到機器時替換Vagrant的預設不安全密鑰。預設情況下,這是真的。隻有在尚未使用私鑰進行身份驗證或者您依賴于預設的不安全密鑰時才有效。如果不關心項目的安全性,并希望繼續使用預設的不安全密鑰,就将其設定為false。

config.ssh.private_key_path = ["~/.ssh/id_rsa"]
           

用于SSH到客戶機的私鑰的路徑。預設情況下,是Vagrant随附的不安全私鑰,因為這是公共使用的。如果使用自定義SSH密鑰建立自己的自定義框,則應指向該私鑰。還可以通過将此設定為數組來指定多個私鑰。

Configures provisioners on the machine, so that software can be automatically installed and configured when the machine is created.

config.vm.synced_folder ".", "/vagrant", disabled: true
           

在機器上配置同步的檔案夾,以便主機上的檔案夾可以與客機同步。

修改完Vagrantfile的配置後,記得要用

> vagrant reload

指令來重新開機VM之後才能使用VM更新後的配置。但這個VagrantFile需要先執行

> ssh-keygen

如果出現

‘ssh-keygen’ 不是内部或外部指令,也不是可運作的程式 或批處理檔案。

要先安裝git,推薦一個教程Git教程在環境變量中修改PATH