复制 virtualenv 文件夹后如何在 Cygwin 中激活 virtualenv

How to activate virtualenv in Cygwin after copying the virtualenv folder

完全是初学者。尝试构建一个烧瓶网络应用程序。使用 Windows 8.

在 Cygwin 中激活我的 python virtualenv 时遇到一些问题。到目前为止,我一直在使用 git shell。

我将我的文件夹 ("app") 复制到我的 cygwin 主目录中,它的设置如下:

app - templates
    - static
    - flask - env - scripts - python
                  - ...
    - hello.py
    - ...

我将目录切换到 app 文件夹,然后当我键入命令激活我的 virtualenv 时:

$ source flask/env/scripts/activate

终端显示:

(env)

所以我假设它在工作,直到我仔细检查哪个 python:

$ which python

并且 returns 我原来的全局 python 安装,而不是虚拟环境。我检查了已安装的软件包以仔细检查我正在使用的 python 环境。

我在 git shell 中使用了相同的命令,它激活了正确的 virtualenv。我哪里错了/我需要改变什么?如果您需要更多信息,请告诉我。

我使用 cygwin 创建了一个新的虚拟环境,当我激活新的环境时,它可以很好地切换到那个环境。为什么它对我复制的文件夹不起作用?

I created a new virtual environment using cygwin and when I activated the new env, it switched to that environment fine. Why won't it work for the folder which I copied in?

这最后一句话才是真正的问题所在。您尝试激活的方式是正确的。问题是virtualenv目录一定不能移动。

virtualenv 中的 activate 脚本在内部使用绝对路径。如果您移动目录,路径将不再有效,因此 which pythonPATH 上找到第一个有效的二进制文件,这是您的全局二进制文件。

如果您需要将项目移动到不同的位置,并将 virtualenv 与其一起移动,请重新创建 virtualenv,不要复制它。 推荐的做法是使用 requirements.txt 文件,并使用 pip install -r requirements.txt 安装包。 这样,重新创建一个 virtualenv 就非常容易了:创建一个空的 virtualenv,然后 运行 pip ... 命令。 virtualenv 中应该没有其他需要移动的东西,只有 pip 放在那里的东西,或者其他 python 安装程序脚本,如果你使用了任何(并且你需要重新 运行 , 除了 pip).