【问题标题】:pipenv : how to force virtualenv directory?pipenv:如何强制 virtualenv 目录?
【发布时间】:2018-05-30 06:59:38
【问题描述】:

实际上,pipenv 会使用这样的路径安装 virtualenv:

$WORKON_HOME/<base_dir>-<hash>

是否可以有我想要的路径,即没有base_dirhash,例如:

/home/user/myapp_venv

【问题讨论】:

  • $ virtualenv /home/user/myapp_venv?
  • 当然是使用 pipenv 命令!
  • pipenv 并非旨在创建任意环境,这就是 virtualenv 的用途。但是,您可以将已创建的环境与pipenv 一起使用,如答案所示。

标签: python pip pipenv


【解决方案1】:

除了使用自定义位置外,您还可以在项目目录中安装 virtualenv。只需在 .bashrc/.zshrc 文件中添加以下行:

export PIPENV_VENV_IN_PROJECT=1

只是想让其他人知道还有另一种方法可用。

你应该将 virtualenv 保留在项目目录内部还是外部是一个固执己见的问题。

【讨论】:

  • 如何在 windows 中做到这一点?
  • @TonyS 在windows下,创建一个同名的环境变量,即PIPENV_VENV_IN_PROJECT并将其值设置为1。我没有测试过这个因为我没有windows机器,但是这个应该工作。
【解决方案2】:

pipenv 中有一个未记录的功能:如果您 create a file named .venv in the project root with a path in itpipenv 将使用它而不是自动生成的路径。

不过,这是is more fit for cases when you already have an established set of environments that you wish to reuse。否则,将环境放置在任意位置最终很容易造成混乱。 pipenv 让您从这项任务中解脱出来,专门将它们保存在一个可预测的位置,并消除人为错误造成的意外碰撞。

【讨论】:

  • 我认为您的意思是文件夹而不是文件 .. 是的,它有效。
  • @DAMAR225 不,我的意思是一个文件。它的内容需要是环境目录的路径。如果您创建一个目录.venv,它本身将用于环境。但是 OP 要求任意路径。
【解决方案3】:

pipenv有一个undocumented feature,它可以从VIRTUAL_ENV环境变量中找到virtualenv路径,但是需要手动创建virtualenv:

virtualenv /home/user/myapp_venv
VIRTUAL_ENV=/home/user/myapp_venv pipenv install

【讨论】:

    【解决方案4】:

    在 windows 中,Pycharm 用户通过

    1. 在项目中使 .venv 折叠

    2. 设置->项目->项目解释器->pipenv环境

    对我有用

    【讨论】:

      【解决方案5】:

      在项目中创建目录 .venv 然后尝试使用 pipenv install &lt;some package&gt; 启动在我的 mac 中起初对我不起作用,它总是在其他地方创建虚拟环境。虽然后来我弄清楚了原因。 hack 是,首先 cd 到项目文件夹 cd /Home/.../MyProject 然后创建一个空的 Pipfile touch Pipfile 创建一个目录 mkdir .venv 应该可以工作。现在你可以运行pipenv install 和.venv 文件夹。

      现在详细说明来自源code。当 pipenv 尝试创建一个虚拟环境时,它会查看目录 dot_venv = os.path.join(self.project_directory, ".venv")(取自源代码),这就是 self.project_directory 的样子:

      @property
          def project_directory(self):
              # type: () -> str
              return os.path.abspath(os.path.join(self.pipfile_location, os.pardir))
      

      因此,该函数会查找 pipfile 位置以创建将创建虚拟环境的路径。因此,如果您事先创建空的Pipfile,则确认它会找到该文件,然后找到 .venv 目录并一起创建路径。

      【讨论】:

        猜你喜欢
        • 2018-07-18
        • 2019-08-21
        • 2022-08-18
        • 2018-06-23
        • 2019-04-04
        • 2018-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多