Python pipenv:如何强制virtualenv目录?

Python pipenv:如何强制virtualenv目录?,python,pip,pipenv,Python,Pip,Pipenv,实际上,pipenv将使用如下路径安装virtualenv: $WORKON_HOME/<base_dir>-<hash> pipenv有一个函数,它可以从VIRTUAL\u ENV环境变量中找到virtualenv路径,但您需要手动创建virtualenv: virtualenv /home/user/myapp_venv VIRTUAL_ENV=/home/user/myapp_venv pipenv install 除了使用自定义位置外,还可以在项目目录中安装v

实际上,pipenv将使用如下路径安装virtualenv:

$WORKON_HOME/<base_dir>-<hash>
pipenv有一个函数,它可以从
VIRTUAL\u ENV
环境变量中找到virtualenv路径,但您需要手动创建virtualenv:

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

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

export PIPENV\u VENV\u IN\u PROJECT=1
只是想让其他人知道还有另一种方法可用


您是否应该将VirtualNV保留在项目目录的内部或外部是一个自以为是的问题。

pipenv
中有一个未记录的功能:如果您,
pipenv
将使用该功能而不是自动生成的路径


然而,这。否则,将环境放置在任意位置最终很容易造成混乱
pipenv
专门让您从这项任务中解脱出来,将它们放在一个可预测的位置,并消除人为错误造成的意外碰撞。

在windows中,Pycharm用户

  • make.venv折叠项目

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


  • 它适用于我创建一个目录。项目中的venv然后尝试使用
    pipenv启动安装
    起初在mac中对我不起作用,它总是在其他地方创建虚拟环境。不过后来我想明白了原因。黑客首先是
    cd
    到项目文件夹
    cd/Home/../MyProject
    ,然后创建一个空的Pipfile
    touch Pipfile
    创建目录
    mkdir.venv
    应该可以工作。现在您可以运行
    pipenv安装
    并使用.venv文件夹

    现在从源代码中给出详细说明。当pipenv尝试创建虚拟环境时,它会查看目录
    dot\u venv=os.path.join(self.project\u directory,.venv”)
    (取自源代码),这就是
    self.project\u目录的外观:

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

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

    $virtualenv/home/user/myapp\u venv
    ?当然可以使用pipenv命令
    pipenv
    不用于创建任意环境,这就是
    virtualenv
    的用途。但是,您可以将已创建的环境与
    pipenv
    一起使用,如答案所示。我想您的意思是文件夹而不是文件。。是的,它是有效的。@DAMAR225不,我指的是文件。其内容必须是环境目录的路径。如果您创建一个目录
    .venv
    ,它本身将用于一个环境。但是OP请求一个任意路径。如何在windows中执行此操作?@TonyS在windows下,创建一个同名的环境变量,即
    PIPENV\u VENV\u in_PROJECT
    ,并将其值设置为1。我没有测试过这个,因为我没有windows机器,但是这个应该可以工作。
    @property
        def project_directory(self):
            # type: () -> str
            return os.path.abspath(os.path.join(self.pipfile_location, os.pardir))