前幾天去聽了北京python-conf,老師們都在宣傳python3的各類好處,和自力討論以後,決定把本身的小項目都升級到python3。其實代碼改起來還好,由於都是比較小的項目,問題主要卡在部署。我使用的雲服務器都是ubuntu14.04的,上面默認的python3是3.4版本,而我本地的是3.6.3版本。雖然目前沒問題,但爲未來起見,以及爲了讓本地開發和線上的python版本儘可能一致,故嘗試在服務器上也用3.6.3的版本。python
一開始的時候試圖參照這兒 的第一個方法安裝:git
apt-get install python3.6.3
安裝py3.6python3.6 -m venv virtualenv_name
的方法來建立虛擬環境apt-get install python3-venv
,根據搜到的資料,運行sudo apt-get install python3.6-venv
python3.6-venv : Depends: python-pip-whl (>= 8.1.0-2) but it is not going to be installed
。應該是pip版本過低。python get-pip.py
成功升級pip版本以後,再次運行sudo apt-get install python3.6-venv
,仍然報錯。以後使用了上述連接的第二種方法安裝pyenv和python3.6.3,而後用~/.pyenv/versions/3.6.3/bin/python -m venv {{ virtualenv_path }}'
來建立虛擬環境。使用這種方法的時候,pyenv會幫咱們把各類東西都處理好,特別是pip。期間沒碰到其餘問題。github
另外,運行pyenv時須要將pyenv的路徑添加到$PATH中並運行對應的command,持久化的方法就是寫入.bashrc。在ansible中找到了須要的模塊blockinfile
,很好用。ubuntu
- name: Ensure .bashrc is configured blockinfile: dest: "{{ ansible_env.HOME }}/.bashrc" block: | export PATH="~/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" marker: '# {mark} ANSIBLE MANAGED BLOCK - pyenv' insertbefore: BOF create: yes
地址bash