簡體   English   中英

為什么我的 venv 似乎是全局安裝的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM