[英]Why does my venv seem to install globally?
對於一個學校項目,我必須使用 Python venv。 這不是第一次,但是當我初始化並激活 venv 並pip list
時,它顯示了我的整個全球 package 收藏。 所以我遞歸地刪除了整個東西,並認為最好再次全局重新安裝所有必需品(numpy、pandas 等),然后只在需要的地方安裝細節。
然后我發現無論我安裝在哪里(是否激活 venv),它總是只會全局下載。 無論我在pip list
ed,它總是會顯示整個內容。 這讓我想到我可能從來沒有讓 venvs 工作過。
我經常做:
python3 -m venv venv
source venv/bin/activate
它會在小箭頭(或 $)之前顯示(venv)
暗示它有效,但顯然無效。
我錯過了什么?
我在 M1 MacBook Air 上,使用 zsh(我的 zsh,但我認為這不會有什么不同),Python 3.10。
編輯:原來只有一個特定的venv是這種情況。 創建另一個 venv 時返回預期的行為。 仍然不確定是什么問題。
首先,您想檢查運行python3
時引用了哪個 python 解釋器:為此,運行which python3
(如果您的環境已成功激活,這應該返回path/to/env/bin/python3
)
每次你想在你的虛擬環境中安裝 package 時,確保運行python3 -m pip install my_package
而不是pip install my_package
:這將確保my_package
將被安裝到與你的環境相關的 python 解釋器。
最后,為了避免在全局 python 解釋器上錯誤安裝任何 package,請將其添加到.bashrc
/ .zshrc
中:
export PIP_REQUIRE_VIRTUALENV="true"
每次您嘗試將 package 安裝到全局解釋器時,這都會引發錯誤。 為了保留全局安裝包的選項,我另外定義了以下命令:
gpip() {
PIP_REQUIRE_VIRTUALENV="" pip "$@"
}
並運行gpip install my_package
以全局安裝它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.