python開發環境依賴的問題,非常影響團隊效率。
接下來的文檔介紹我們現在團隊使用的Pycharm+Vagrant部署開發環境的方式。
食用好處:
- 環境配置簡單友善
- 搭建好了之後,友善團隊複用,真團隊開發的好幫手
以下流程基于的搭建環境:
OS:Win10
Pycharm:2019.2.4
1.下載下傳軟體
1.1 Pycharm
1.1.1 Pycharm v2019.2.4安裝成功後,不要打開軟體,然後将激活更新檔“jetbrains-agent.jar”放在 Pycharm的bin路徑下。
1.1.2 打開 pycharm64.exe.vmoptions 後,如下圖:
如果是預設安裝的,在文檔的最後面加上:
-javaagent:C:\Program Files\JetBrains\PyCharm 2019.2.4\bin\jetbrains-agent.jar
如果不是,則填pycharm64.exe所在位置,然後[Ctrl + S]儲存檔案
1.1.3 Pycharm已注冊
1.2 Virtualbox
免費又輕量的虛拟化軟體
下載下傳最新版安裝即可
1.3 Vagrant
1.3.1 安裝最新版本Vagrant
Vagrant下載下傳位址
成功安裝:指令行輸入
vagrant -v
,輸出vagrant版本資訊,輸出其他資訊,則失敗
1.3.2 下載下傳CentOS7鏡像:
CentOS-7-x86_64-Vagrant-1907_01.VirtualBox.box
- 下載下傳box檔案:CentOS-7-x86_64-Vagrant-1907_01.VirtualBox.box國内源下載下傳位址
- 指令行進入下載下傳檔案夾
-
vagrant box add BoxName CentOS-7-x86_64-Vagrant-1907_01.VirtualBox.box
為自定義鏡像名字,這裡我設定的名字為BoxName
centos7
Vargant的使用參考:Vargrant Docs
2. 初始化項目
2.1 初始化生成Vagrantfile
-
->Tools
->Vagrant
Init in Project Root
- 在
彈框中選擇剛添加的Pycharm
,此時項目根目錄下會出現一個名叫BoxName
的配置檔案Vagrantfile
- 修改
Vagrantfile
#對應`Vagrant`添加的box,即1.3.2 中設定的`BoxName`
config.vm.box = "centos7"
#通過端口映射來通路Vagrant内的Django開發伺服器
#将本機的80端口映射到虛拟機的8080端口
config.vm.network "forwarded_port", guest: 8080, host: 80, host_ip: "192.168.5.99"
#設定同步目錄和排除檔案規則
config.vm.synced_folder "../neo-plateform", "/vagrant_data"
rsync__verbose = true,
rsync__exclude = ['.git*', 'node_modules*','*.log','*.box','Vagrantfile']
#安裝軟體和修改配置
config.vm.provision "shell", inline: <<-SHELL
sudo yum install -y python36 python36-devel python36-pip \
libtiff-devel libjpeg-devel libzip-devel freetype-devel \
lcms2-devel libwebp-devel tcl-devel tk-devel sshpass \
openldap-devel mariadb-devel mysql-devel libffi-devel \
openssh-clients telnet openldap-clients gcc
mkdir /root/.pip
cat << EOF | sudo tee /root/.pip/pip.conf
[global]
timeout = 6000
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors = true
mirrors = https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
#注意,EOF前面必須沒有空格
EOF
mkdir /home/vagrant/.pip
cat << EOF | sudo tee /home/vagrant/.pip/pip.conf
[global]
timeout = 6000
index-url = https://mirrors.aliyun.com/pypi/simple/
[install]
use-mirrors = true
mirrors = https://mirrors.aliyun.com/pypi/simple/
trusted-host=mirrors.aliyun.com
EOF
SHELL
Vagrantfile官方說明文檔
-
由于vagrant同步檔案夾有bug,不能實時同步,是以每次虛拟機重新開機之前,都需要确認一下配置
打開位于項目檔案夾下的.vagrant/machines/default/virtualbox/synced_fllders檔案
确認
對應的value裡“/vagrant”都改為了“/vagrant_data”,virtualbox
- 啟動Vagrant 啟動成功之後可以在VirtualBox裡看到
- 連接配接到Vagrant虛拟機
-
測試修改檔案後,是否同步成功
測試
修改後,D:/HRG/GitDevops/neo-plateform
/vagrant_data
是否改變
測試
修改後,/vagrant_data
是否改變D:/HRG/GitDevops/neo-plateform
- 選擇目前目錄下的位址,進入虛拟機
-
安裝依賴庫
進入
,執行/vagrant_data
pip3 install –r requirements.txt
- Pycharn切換python解釋器至Vagrant虛拟機内的解釋器
File -> Settings -> Project YourProjectName -> Project Interpreter -> Add -> Vagrant -> Vagrant Instance Fold && Python interpreter path
Vagrant選項中的python路徑設定到Vagrant虛拟機内python3.6二進制的全路徑
至此開發環境搭建完成
3. 運作Django web伺服器
- 3.1 修改運作配置,運作的host位址為0.0.0.0, 端口為8080,并且確定使用了vagrant虛拟機内的python解釋器
-
3.2 保證端口轉發設定正确
確定
的host配置和3.1中配置一緻Vagrantfile
config.vm.network "forwarded_port", guest: 8080, host: 8080, host_ip: "192.168.5.99"
- 3.3 啟動
已經啟動過了的,不需要重新啟動Vagrant
- 3.4 運作
伺服器 或者django web
- 3.5啟動成功之後,在本機上調用位址+端口即可通路Django程式
4. 使用
在這樣的一個環境下,你建立的所有 Python 項目檔案,都會被同步到 Vagrant 虛拟機中的
/vagrant_data/
目錄下,你在本地運作 Python 項目,其實都是在 Vagrant 虛拟機中運作。
如果你的 Python 項目運作需要依賴很多的元件 ,那完全可以将這些元件全部安裝在這個 Vagrant 虛拟機中,打包成鏡像,然後把這個鏡像和項目(包括 .vagrant 檔案夾 和 Vagrantfile)發給你的同僚,他們就能很快的也擁有一套可以穩定運作的項目運作環境。
5.常見問題和解決方案
- pip安裝依賴庫失敗:檢查pip是否最新,不是則更新pip
- Django在Vagrant虛拟環境裡正常啟動,但無法在本機裡調用接口:檢查Vagrantfile中的端口映射是否正确
附錄:
中國大陸開源鏡像站彙總
Pycharm+Vagrant安裝包百度雲下載下傳連結
提取碼:x3x2