簡體   English   中英

從 pyenv-virtualenv 切換到 pipeenv 時保持相同的共享虛擬環境

[英]Keeping the same, shared virtualenvs when switching from pyenv-virtualenv to pipenv

我開始看pipenv ,它似乎很不錯。 我唯一擔心的是,我的大部分項目都涉及numpyscipy和其他一些不太小的庫。

當前管理我的項目的方式:我安裝了pyenvpyenv-virtualenv 我有幾個(目前4)具體virtualenvs每個迎合類型的項目。 項目本身設置了.pyenv-version ,我啟用了pyenv的自動加載 virtualenv 功能。 如果我需要共享一個項目,我會使用pip freeze -lvirtualenv生成一個requirements.txt

因此,在我當前的設置中,我有X個項目和Y, Y << Xvirtualenvs ,總共有幾 GB 的硬盤空間。 請注意,由於像numpy這樣的大型庫,每個virtualenvs都非常大,大約 700-900 MB。

我的問題:

據我了解, pipenv默認情況下會為我的所有項目創建一個virtualenv ,因此我的virtualenvs占用的硬盤空間會大大增加。 我感興趣的是:

  • 是否可以在使用完全相同依賴項的多個項目之間共享pipenv環境? 即加載相同virtualenv多個pipenv配置?
  • 如果沒有,是否可以從我用pyenv設置的virtualenv生成pipenv配置文件? 即我不會用pipenv實際運行我的項目,我不會創建任何virtualenvspipenv ,但我會創造pipenv配置文件共享項目(在這種情況下,可能沿着側requirements.txt為好)。

編輯:我重寫了大部分問題以使其更清楚。

pipenv似乎不太適合您的特定工作流程,因為它以項目為中心而不是以環境為中心。 pipenv將虛擬環境視為易變的,並保留在情況需要時自由更改它的權利。 您可以使用它,但在更改環境的情況下,由於pipenv更嚴格的審查,保持所有項目同步將是一件痛苦的事情。

可以通過在項目根目錄中創建一個帶有路徑的.venv文件明確指定pipenv用於項目的虛擬環境(通常,virtualenvs 是在特定位置創建的,其自動生成的名稱包含路徑的哈希值)該項目)。 這似乎是無證的。

但是, pipenvvirtualenv不同,它檢查並強制虛擬環境具有滿足Pipfile條件的確切模塊集以及生成的Pipfile.lock指定的確切“上次測試配置”。

因此,如果您更改環境中的任何軟件包版本,則需要:

  • 更新受影響項目中的所有Pipfile.lock (例如復制更改的項目)。 使用生成的Pipfile ,您Pipfile刪除它們。
  • 如果有更改,將受影響項目中的所有Pipfile更新為新的包版本(例如復制更改的版本)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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