【问题标题】:anaconda virtual env imports modules from globalanaconda 虚拟环境从全局导入模块
【发布时间】:2015-04-07 07:47:20
【问题描述】:

在 Windows PowerShell 中工作,我使用

在 Anaconda 中创建了一个虚拟环境
>create conda -n test python=2.7.8

我使用激活它

>activate test
activating environment "test"...

测试环境不包含任何包。 Python是那里唯一的东西。我检查了 test\Lib\site-packages 文件夹,它是空的。 我开始python

>python
>>>import pandas
>>>pandas.Series(range(1,5))
0  1
1  2
2  3
3  4
dtype: int64

我预计会出现错误消息,因为此虚拟环境中没有安装 pandas。相反,它似乎是从安装了 pandas 的全局 Anaconda 环境中导入 pandas。

我认为虚拟环境应该是隔离的。我是否误解了它们应该如何工作? 如果他们应该被隔离,问题可能是什么?

【问题讨论】:

  • 你是如何安装 conda 的?

标签: python anaconda env


【解决方案1】:

堆栈溢出的新手,但我想我可以提供帮助。首先,我需要运行的命令有点不同(我在 Linux 上)。也就是说,事实上,虚拟环境应该如何工作。有几件事要尝试:conda create --dry-run -n test python=2.7.8 看看是否将 pandas 安装到 venv(我不知道为什么会这样)。另一个想法,当您activate test 时,提示实际上是否更改为 venv?或许可以看到:virtualenv-in-powershell

【讨论】:

  • barrymoo - 我确实使用了 --dry-run 开关,它报告说它唯一放入“测试”的是 python,没有其他包。在 PowerShell 中,激活“测试”后提示没有改变。从那以后,我尝试从 Cmd Prompt 激活。提示确实发生了变化。尝试导入 pandas 确实会产生 ImportError: No module named pandas。为什么 PowerShell 中的行为如此不同。这是否意味着我不能使用 PowerShell 访问 Anaconda 环境?如果我使用 virtualenv,我会看到同样的行为吗?
  • 查看我在回答中提供的链接,您似乎可以在 PowerShell 中使用 venv。但是,它需要一些修改。其中一位用户建议寻找Scripts\test.ps1 来激活 PowerShell。
  • barrymoo - 感谢您的帮助。我确实关注了您的链接,但不明白。我对 PowerShell 的经验很少,对 bat 脚本也没有。现在我很高兴知道不要使用 PS 在我的 conda venv 中工作,并坚持使用 Cmd Prompt。我通常是编程新手,并且正处于下一个阶段。很容易发现自己处于完全未知的领域。我希望在以后了解更多之后再重新审视 PS + venv 问题。我会投票赞成你的答案,但看来我没有足够的分数来做这件事。
【解决方案2】:

Windows 有一点可能会导致这样的混乱情况,即它总是隐式地将.(当前目录)放在搜索路径的前面。这意味着如果您在启动 python 时当前位于 Anaconda 目录中,它将在该目录中运行 python.exe,而不管 PATH 的其余部分是什么样的(activate 命令,以防您不'不知道,通过修改PATH变量中目录的顺序来工作)。

解决方案是在启动 Python 之前 cd 离开 Anaconda 目录。

【讨论】:

  • 我试过了,它仍然表现相同。我在 Powershell 中,>cd c:\ ,现在提示符是 PS C:\>>activate test。 PS 提示没有改变。 >python>>>import pandas,没有错误,pandas 工作正常。 “测试”环境显然不是孤立的。
  • 不幸的是,activate 目前在 Powershell 中不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-14
  • 2021-07-09
  • 1970-01-01
  • 2019-12-23
  • 2018-11-01
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多