前文
在開發環境使用Python創建程序的時候,我們喜歡用pyenv+virtualenv來管理,不過在生產環境因爲機器的限制,有的時候就用不上pyenv,比如當我安裝好pyenv的時候,想pyenv install 3.6.8安裝Python3.6.8時就報錯如下:
TMPDIR=/tmp cannot hold executables (partition possibly mounted with `noexec`)
這個的解決也是非常輕鬆,如問題描述因爲tmp目錄掛載方式出錯,而這個是運維同事針對生產環境所做的限制,所以無法改變,相應的解決方法查看這個issue:https://github.com/rbenv/ruby-build/issues/703。
解決
生產環境也可以只用virtualenv來管理,往往只有Python2和Python3兩套環境即可,然後就是不同項目的依賴包不同,所以僅要下載Python3即可(2自帶),然後通過建立不同的env來配置不同的項目依賴包,具體如下操作:
- pip安裝virtualenv:pip install virtualenv
- 如果不存在pip:yum install python-pip
- 利用virtualenv創建(我取名環境爲py36env):/usr/local/bin/virtualenv -p /usr/bin/python3.6 py36env
爲了管理方便通常直接在項目下創建該env目錄比較好,這樣每次進入該項目,就可以直接利用env來管理,並且安裝包直接進入py36env/bin/activate即可,命令是:
source py36env/bin/activate
pip install package
總結
開發環境用pyenv+virtualenv可以完美實現多版本的python虛擬環境,針對不同的項目可以體驗不同版本的特性,而生產環境直接用virtualenv即可。