【问题标题】:virtualenv dependent on where you start python fromvirtualenv 取决于你从哪里开始 python
【发布时间】:2016-07-13 07:03:09
【问题描述】:

我通常是 unix/Mac 人员,所以我不确定这可能是什么关系,但我的一个用户在通过 cmd 命令行运行的 windows 框(windows 7?)上。

我为 Windows 设置了 virtualenv,在这个系统上(其他计算机工作正常)我可以启动 virtualenv (activate.bat),当我从 venv/Scripts 目录中运行 python 时,一切看起来都很好。我的 sys.path 是正确的。

当我 cd .. 并再次运行 python(或从其他任何地方运行 python)时,如果我不在 virtualenv 中,sys.path 就是 sys.path。

我的提示符前仍然有 (venv),所以 venv 认为它仍然处于活动状态...

正确的系统路径:

['', 'C:\\Windows\\system32\\python27.zip', 
'C:\\Users\\dellam\\Dropbox (CEP)\\users\\brianp\\course\\CYAN\\venv\\DLLs', 
'C:\\Users\\dellam\\Dropbox (CEP)\\users\\brianp\\course\\CYAN\\venv\\lib', 
'C:\\Users\\dellam\\Dropbox CEP)\\users\\brianp\\course\\CYAN\\venv\\lib\\plat-win', 
[ETC]]

来自 venv\Scripts 以外任何位置的 sys.path:

sys.path

['', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 
'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 
'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 
'C:\\Python27\\lib\\site-packages']

我正在正确使用 virtualenv。至少,它可以在其他计算机上运行。我正确地创建了一个 venv,并且我正在激活它。它在我的提示符后面附加了 (venv)。人们链接的问题解释了如何使用虚拟环境。我做的都是正确的。

【问题讨论】:

  • 这可能以前在this question 中已经回答过 - 你可以检查一下吗?还应该有一个deactivate.bat - 你运行它是为了摆脱 venv 吗?
  • 我已激活。我已经运行了 activate.bat,并且 (venv) 在我的命令行中,但是 sys.path 不正确,除非我从 venv/Scripts 运行 python。我相信我正确使用了 venv,因为它适用于其他系统......
  • Scripts 目录中的where python 与其他目录相比有何不同?
  • 在这两种情况下,都是 C:\python27\python.exe
  • 你没有venv/Scripts/python.exe吗?如果是这样where 至少应该在 Scripts 目录是当前目录时首先找到它。

标签: python windows python-venv


【解决方案1】:

显然问题在于我的代码和 virtualenv 存在于 Dropbox 上。这意味着它会被复制到每台新计算机上。它在第二台计算机上的 powershell 中工作的事实只是一个侥幸......现在我首先需要找出一种更好的方法来做到这一点...... sigh

【讨论】:

  • 我想说——作为一个 Windows 用户,我使用 powershell 比尝试任何其他方法更幸运。希望您找到实施的解决方案。
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多