python virtualenv與pip換源

Python 中的virtualenv
python中的虛擬環境是個好東西, 使用Python進行項目開發的過程中往往會有會安裝很多第三方包, 如果全部都安裝在全局變量中的話無疑會使全局環境變得混亂. 虛擬環境完美的解決了這一問題, 把項目中要安裝的第三方包安裝在虛擬環境中, 這樣就可以保持全局變量的乾淨, 更重要的是, 如果要在另一臺電腦中復現相同的環境, 也可以非常容易的復現出來.

  • 創建python3的虛擬環境
    使用virtualenv默認創建的是linux下的默認Python版本, 也就是python2.7版本, 像我這種用python3的就不能直接用默認的命令,要加一個參數.
        virtualenv -p python3 venv
    

當然, 每次都這麼打肯定煩死, 一個一勞永逸的方法是把python3 當做默認的python版本, 這樣就不用每次都打這麼長了. 把python3當成默認的python版本主要有兩種方法, 一種是別名, 一種是直接修改系統的設置. 這裏只說第一種.
編輯自己home目錄下的.bashrc文件, 並在最後加上一句

     alias python='python3'

順便安利一下這個alias別名命令, 非常好用, 可以把常用的冗長的命令起個簡短的別名, 方便使用.

  • 使用sudo時虛擬環境中的包檢測不到
    有一次我要在80端口啓動flask程序, 前1024位都是系統服務端口, 必須啓用管理員權限才能打開. 於是我在虛擬環境中使用瞭如下的命令
sudo python3 manager.py runserver --host 0.0.0.0 -p 80
   但是卻報瞭如下的錯誤.
   
   flask包沒有安裝, 可是虛擬環境中已經安裝了啊. 這時候要注意了, 你已經掉入了linux sudo中的一個小坑了. 先用下面的命令查看這條命令使用了哪個地方的python3
   ```bash
  which python3

可以看到, 當使用了sudo之後, 這時候的python是全局中的python, 而並不是虛擬環境中的python, 自然虛擬環境中的包就無法調用了.解決方法是將python換成虛擬環境中的python,可以這麼寫
sudo venv/bin/python3 manager.py runserver --host 0.0.0.0 -p 80

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章