Sam*_*uel 5 python shell cygwin virtualenv
完整的初学者在这里。尝试构建一个 Flask Web 应用程序。使用 Windows 8。
在 Cygwin 中激活我的 python virtualenv 时遇到一些问题。到目前为止,我一直在使用 git shell,没有任何问题。
我将我的文件夹(“app”)复制到我的 cygwin 主目录中,它的设置如下:
app - templates
- static
- flask - env - scripts - python
- ...
- hello.py
- ...
Run Code Online (Sandbox Code Playgroud)
我将目录更改为 app 文件夹,然后当我键入命令来激活我的 virtualenv 时:
$ source flask/env/scripts/activate
Run Code Online (Sandbox Code Playgroud)
终端显示:
(env)
Run Code Online (Sandbox Code Playgroud)
所以我假设它正在工作,直到我仔细检查哪个python:
$ which python
Run Code Online (Sandbox Code Playgroud)
这将返回我原来的全局 python 安装,而不是虚拟环境。我已经检查了已安装的软件包以仔细检查我使用的是哪个 python 环境。
我在 git shell 中使用了相同的命令,它激活了正确的 virtualenv。我哪里出错了/我需要改变什么?如果您需要更多信息,请告诉我。
我使用 cygwin 创建了一个新的虚拟环境,当我激活新的 env 时,它可以很好地切换到该环境。为什么它不适用于我复制的文件夹?
我使用 cygwin 创建了一个新的虚拟环境,当我激活新的环境时,它很好地切换到了该环境。为什么它不适用于我复制到的文件夹?
最后一句话才是真正的问题。您尝试激活的方式是正确的。问题是该virtualenv目录不能移动。
activate里面的脚本在virtualenv内部使用绝对路径。如果移动目录,路径将不再起作用,因此which python会在 上找到第一个有效的二进制文件PATH,这是您的全局二进制文件。
如果您需要将项目和 virtualenv 一起移动到其他位置,然后重新创建 virtualenv,请勿复制它。推荐的做法是拥有一个requirements.txt文件,并使用pip install -r requirements.txt. 这样,重新创建 virtualenv 就非常简单:创建一个空的 virtualenv,然后运行命令pip ...。virtualenv 内部不应该有任何其他需要移动的内容,只有pip放置在那里的内容或其他 python 安装程序脚本(如果您使用过任何脚本)(并且除了 之外,还需要重新运行pip)。