如何重命名一个virtualenv文件夹而不打破它?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)

我已经创建了文件夹并初始化了一个virtualenv实例。

$ mkdir myproject
$ cd myproject
$ virtualenv env

当我运行时(env)$ pip freeze,它会显示已安装的软件包。

现在我想重命名myproject/project/

$ mv myproject/ project/

但是,现在当我跑步

$ . env/bin/activate
(env)$ pip freeze

它说pip没有安装。如何在不破坏环境的情况下重命名项目文件夹?

提问于
用户回答回答于

需要调整安装以使用相对路径。virtualenv为此提供了--relocatable选项。从文档

通常情况下,环境与特定路径相关联。这意味着您无法移动环境或将其复制到另一台计算机。您可以使用以下命令修复环境以使其可重定位: $ virtualenv --relocatable ENV 注意: ENV是虚拟环境的名称,您必须从ENV目录之外运行。 这将使一些由setuptools创建的文件或分发使用相对路径,并将更改所有脚本以使用activate_this.py,而不是使用Python解释器的位置来选择环境。 注意:在将任何软件包安装到环境中之后,您必须运行它。如果您使环境可重新定位,然后安装新的程序包,则必须再次运行virtualenv --relocatable。

用户回答回答于

我相信是这样的"knowing why" matters more than "knowing how"。所以,这是解决这个问题的另一种方法。

当你运行:

$ . env/bin/activate

它实际上执行以下命令:

(我测试了这个/tmp

VIRTUAL_ENV="/tmp/myproject/env"
export VIRTUAL_ENV

但是,你刚刚重命名myprojectproject,以便命令执行失败。这就是为什么它说pip is not installed,因为既没有pip 在系统全球环境中安装 ,也没有你的virtualenv pip来源正确。

如果你想手动解决这个问题,那就是:

  1. 修改你/tmp/project/env/bin/activate喜欢的Vim编辑器,通常在 Line 42 VIRTUAL_ENV='/tmp/myproject/env' => VIRTUAL_ENV='/tmp/project/env'
  2. 修改/tmp/project/env/bin/pipLine 1 #!/tmp/myproject/env/bin/python => #!/tmp/project/env/bin/python

之后,env再次激活你的虚拟环境,你会看到你的pip回归。

扫码关注云+社区