【问题标题】:How to share a virtual environment with pipenv?如何与 pipenv 共享虚拟环境?
【发布时间】:2018-02-13 18:06:57
【问题描述】:

Pipenv 虚拟环境 (venv) 将与子文件夹共享。 因此,例如,如果您在 ~/foo/ 中安装了 venv,则可以在 ~/foo/baz/ 中访问它

但是如果您想在~/foo/bob/~/baz/alice/ 之间共享相同的 venv 怎么办?

以下类型对我有用。希望能帮到你。

【问题讨论】:

    标签: python pipenv


    【解决方案1】:

    pipenv 中有一个未记录的功能:如果您在项目根目录中创建一个名为 .venv 的文件并带有指向 virtualenv 的路径,pipenv 将使用该路径而不是自动生成的路径。

    (您仍然需要保持Pipfile's 和Pipfile.locks 同步。按照@MalikKoné 的建议使它们成为符号链接可能会这样做,但如果Pipfiles 受到版本控制,则不会。 )

    不过,这是is more fit for cases when you already have an established set of environments that you wish to reuse。否则,将环境放置在任意位置最终很容易造成混乱。

    【讨论】:

      【解决方案2】:

      与 pipenv 共享虚拟环境 创建目录~/foo/bob/

      mkdir -p ~/foo/bob/ ; cd ~/foo/bob/        
      

      在 ~/foo/bob/ 中创建一个虚拟环境

      pipenv --three
      

      这将创建~/.local/share/virtualenvs/bob-signature/

      安装您需要的任何软件包。例如

      pipenv install jupyter
      

      这将在~/foo/bob/ 中创建一个 Pipfile.lock

      创建另一个目录,比如~/baz/alice/ 并在那里创建一个venv

      mkdir -p ~/baz/alice ; cd ~/baz/alice/ ;  pipenv --three 
      

      和以前一样,pipenv 将在 ~/.local/share/virtualenvs/ 中创建 alice-signature/。 删除该文件夹并将其替换为 bob-signature

      的链接
      cd ~/.local/share/virtualenvs/
      rm -r alice-signature/
      ln -s bob-signature/ alice-signature
      

      ~/baz/alice/ 中,将PipfilePipfile.lock 链接到~/baz/bob/ 中的那些

      cd ~/baz/alice/ ;
      rm Pipfile ; rm Pipfile.lock
      ln -s ~/foo/bob/Pipfile . ;  ln -s ~/foo/bob/Pipfile.lock  .  
      

      现在,您应该有一个可从 alice/bob/ 访问的 venv,并且从这些目录中安装的软件包将被共享.

      【讨论】:

      • 如果Pipfiles 处于版本控制之下(正如他们应该做的那样),则符号链接将不会执行。
      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多