Debian

在 virtualenv 環境中安裝 pip 包的問題

  • March 29, 2019

在創建 python 虛擬環境 virtualenv -p python3 venv並啟動它之後source venv/bin/activate,我嘗試使用 pip 命令安裝 python 包->pip install Flask這會引發權限錯誤:

Could not install packages due to an EnvironmentError: [Errno 13] 
Permission denied: '/var/www/flask/apnisi/venv/lib/python3.5/site-packages/werkzeug'

添加sudo到pip命令後sudo pip install Flask安裝成功;但是,當我pip list安裝軟體包時,它不會顯示新安裝的軟體包。可能是什麼問題呢?

您可能會遇到問題,因為如果您發布的內容是準確的,那麼您似乎沒有正確“獲取”您的環境。我還建議您指定使用的 python 版本,以避免同時具有 python2 和 python3 時出現兼容性問題。如果不是這種情況,請編輯您的問題,然後可以依次刪除或編輯此答案。

創建 python 3 虛擬環境的基礎是:

python3 -m venv /path/to/virtual/env
source ./path/to/virtual/env/bin/activate

您可能需要先安裝venv( apt install python3-venv) 並記住您的路徑和虛擬環境本身必須是您的使用者有權寫入的位置。此時您應該在您的虛擬環境中 ( (env) user@host:~$ _)。

你不應該需要sudowith pip。使用sudowithpip會在全域/系統範圍內安裝包。這幾乎違背了虛擬環境的目的,即隔離 Python 環境以進行開發和測試。如果沒有正確安裝,請參閱官方sudoPython 和有問題的封包檔,因為這可能意味著您在虛擬環境中缺少依賴項或其他配置。

在 Debian 9.8 系統(Linux 4.9.0-8-amd64)上,執行上述步驟,然後執行以下命令,我得到了以下結果:

(env) user@host:~$ pip3 install flask
(env) user@host:~$ pip3 list --format=legacy
Click (7.0)
Flask (1.0.2)
itsdangerous (1.1.0)
Jinja2 (2.10)
MarkupSafe (1.1.1)
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (32.3.1)
Wekzeug (0.15.1)
(env) user@host:~$ python3 --version
Python 3.5.3

引用自:https://unix.stackexchange.com/questions/509272