如何在虚拟环境中运行Spyder?

149

我一直在使用安装了Anaconda发行版的Spyder,它默认使用Python 2.7。目前我需要设置一个带有Python 3.4的开发虚拟环境。

在线研究后,最好的两个建议是:

  1. 首先设置虚拟环境,然后更改Spyder的首选项,例如这里
  2. 在虚拟环境中安装所有Spyder依赖项,如PyQt4,例如这里

这两个建议都很麻烦,而且不适合开发。

是否有解决方案可以在激活所需虚拟环境后自动运行所需的Python版本?


对于未来的读者,这里是官方指南,介绍如何进行此操作。 - mhdadk
11个回答

170

以下是使用Anaconda Navigator在2021年快速设置环境的简单方法。这是最可靠的方法,除非您想要通过编程方式创建环境,但我认为大多数用户不需要这样做:

  1. 打开Anaconda Navigator。
  2. 单击“环境”>“创建”,并给您的环境命名。确保根据需要更改Python/R Kernel版本。

显示图片描述

  1. 进入“主页”,单击Spyder框下方的“安装”。

显示图片描述

  1. 单击“启动/运行”

设置环境时仍然存在一些小错误,大部分应该通过重新启动Navigator来解决。

如果您发现错误,请在Anaconda Issues bug-tracker中发布帮助我们解决它! 如果您在创建环境或环境未正确创建时遇到问题,可以双重检查安装了什么:单击“环境”打开管理窗口,显示已安装的软件包。搜索并选择与Spyder相关的软件包,然后单击“应用”以安装它们。

显示图片描述


6
好的,似乎每个虚拟环境都需要安装不同的Spyder实例。 - Mikhail Genkin
4
我能从命令行完成这个操作吗?每次都运行Navigator感觉很烦。 - nocibambi
1
@nocibambi 是的,如果您的意思只是从cmd中运行Spyder,请参阅tomaskazemekas答案底部。 - questionto42
使用此方法后,我注意到Anaconda将Spyder 安装在 虚拟环境中。环境文件夹的大小增加了约700Mb。这不意味着我使我的环境变得不必要地沉重吗?我想将Spyder用作我的开发环境,但不希望在将脚本部署到服务器时需要其安装。 - Fabio Oliveira
@FabioOliveira 这 ~733Mb 主要是您在项目中可能需要的库和二进制文件。但是,如果您决定不包含这些库,则最终部署将不需要它们。一个脚本很少会超过5Mb的空间,而在生产服务器上运行的完全工作的部署脚本可能需要300Mb的库。 - adelriosantiago
这个解决方案第一次对我起作用。然后我重新启动了Spyder,自那以后就一直出现“启动内核时发生错误”的提示。这个错误只在虚拟环境中出现。 - zunman

139

在Anaconda中,有一个选项可以创建虚拟环境,并且可以指定所需的Python版本。

conda create -n myenv python=3.4

激活它:

source activate myenv   # (in linux, you can use . as a shortcut for "source")
activate myenv          # (in windows - note that you should be in your c:\anaconda2 directory)

更新。我已经在Ubuntu 18.04上进行了测试。现在,您需要使用以下命令为新环境安装Spyder(在上面的命令激活环境之后):

conda install spyder

我也尝试使用pip安装,但对于Python 3.4或更早版本,由于需要手动安装的库依赖性错误,安装会中断。

现在要运行Python 3.4的Spyder,只需键入:

spyder

Spyder with Python 3.4

读者编辑:

对于正常的打开方式,使用“Anaconda Prompt” > activate myenv > spyder (然后“Anaconda Prompt”必须保持打开状态,您不能用它来执行其他命令,强制关闭将关闭Spyder)。当然,这比“Anaconda Navigator” > 切换环境 > 启动Spyder(@adelriosantiago的答案)的长时间加载更快。


8
我已在Windows 7上测试过,它有效。您无需在环境激活时在开头添加“source”单词。要使用Python 2.7,请将设置更改为python=2.7。 - tomaskazemekas
4
也许你需要先在那个环境里安装Spyder?我是用NumPy而不是Anaconda创建了这个环境,所以可能正在从主环境中运行Spyder。 - endolith
4
看起来确实是问题所在。IPython也有同样的问题,但在环境中安装后得以解决。 - endolith
9
我发现在Windows 10上,仅从Anaconda环境启动Spyder仍然会使用默认的Python,我需要先在Anaconda环境中使用conda安装Spyder才能打开与该环境相关联的Python的Spyder。 - Max Power
9
请确保在该环境中安装了Spyder,方法是通过conda install -n myenv spyder进行安装。 - shahar_m
显示剩余13条评论

70

对我起作用的方法:

  1. 在环境中运行 Spyder(在激活源之后)
  2. 转到“工具”>“首选项”>“Python 解释器”,然后从您想要链接到 Spyder 的环境中选择 Python 文件。 例如:/home/you/anaconda3/envs/your_env/bin/python

适用于 Ubuntu 16、Spyder3 和 Python 3.6。


1
在尝试了所有其他帖子(尝试了两天!)之后,这是唯一有效的解决方案,以便在Spider内设置正确的环境变量。 - Antonio Canepa
不需要步骤(1),因为步骤(2)已经将解释器路由到环境中。 - 0xFK
5
针对未来的读者:我也认为第一步是多余的。但是省略它会导致各种错误(甚至会导致用户界面出错,使Spyder无响应)。 - Faruk D.
你的意思不是指conda环境,对吧?否则,如果你没有在该环境下安装Spyder,则无法从该环境下启动Spyder。如果你已经安装了它,就不需要在Spyder的首选项中更改Python解释器。 - pch

59

除了tomaskazemekas的答案之外:您应该通过以下方式在那个虚拟环境中安装Spyder:

conda install -n myenv spyder

(在Windows下,如果您使用Linux或MacOS,可以搜索类似的命令)


2
Spyder通常作为Anconda Python 软件包列表的一部分安装。仅在使用miniconda时可能需要进行额外的安装。 - tomaskazemekas
1
是的,没错。在我的情况下,我已经安装了虚拟环境,并且是轻量级版本,只安装了非常必要的包。我猜可能有人和我处于同样的情况。 - Tin Luu
@tomaskazemekas 先生,我已经安装了Miniconda3 :) 我该如何在Spyder中运行我的Python代码呢?因为我不知道如何运行Spyder。当我在Miniconda提示符中输入“spyder”时,“无法识别此命令”错误会生成。 - Noman marwat
@Noman marwat,由于Spyder不是Miniconda的一部分,您必须在运行命令“conda install spyder”之前安装它。 - tomaskazemekas
之后,在 myenv/bin 目录中查找符号链接,并将其复制到 Applications 文件夹中,这样您就可以轻松地找到它并在其环境中启动 Spyder,而无需在一个小黑窗口中输入命令!(如果您喜欢图标,还可以轻松地为其添加一个图标) - PatrickT

56
要在所有环境中无需重新安装 Spyder,请按照官方参考 这里 的步骤。 总结如下(已经使用 conda 进行测试):
- Spyder 应该安装在基本环境中。 - 从系统提示符处: - 创建新环境。请注意,根据您创建环境的方式(conda、virtualenv),环境文件夹位于系统上不同的位置。 - 激活环境(例如,conda activate [yourEnvName])。 - 在环境内安装 spyder-kernels(例如,conda install spyder-kernels)。 - 查找并复制环境内 Python 可执行文件的路径。可以使用此命令从提示符中查找此路径:python -c "import sys; print(sys.executable)" - 取消激活环境(即返回到基础环境,conda deactivate)。 - 运行 Spyder (spyder3)。 - 最后,在 Spyder 工具菜单中转到 首选项 > Python 解释器 > 使用以下解释器,并粘贴环境 Python 可执行文件的路径。 - 重新启动 ipython 控制台。

提示:在 Spyder 中,你应该看到底部类似于这样的内容:enter image description here

大功告成!


3
这是正确答案!此外,Spyder的安装可以在任何conda虚拟环境中进行,不必在基本环境中进行。 - Sanchit
3
您说得对,@Sanchit。您可以在每个环境中使用 "pip/conda" 安装 Spyder,然后可以从那里调用它,但如果您只想安装一个,这就是解决方案。 - Alexis
通过安装spyder-kernels+并使用sys.path来查找Python路径的另一种方法是,在终端中激活特定的conda环境,然后键入which python - Shalini Maiti
太棒了!如果有疑问,始终要遵循官方参考文档。另外,你也可以使用Anaconda Navigator创建虚拟环境并在其中安装spyder-kernels包。 - Fabio Oliveira
谢谢!我使用没有GUI的Miniconda,并且不想在每个环境中安装Spyder浪费空间。 - ambitiousdonut
显示剩余5条评论

11

我曾经遇到过同样的问题,试图在虚拟环境中运行Spyder。

解决方法很简单:

首先激活你的虚拟环境。

然后在你的虚拟环境中使用pip安装Spyder及其依赖项(PyQt5)。

最后从你的虚拟环境CLI启动Spyder3即可。

现在对我来说它可以正常工作了。


1
这在Ubuntu 16下不再适用于Python2了。有什么解决方法吗? - masad
Python 2 已经被弃用。建议您升级到使用 Python 3,这是明智之举。 - Jerusalem Programmer

11

以上答案是正确的,但是我在虚拟环境中调用 spyder 仍然会使用我的 PATH 来查找默认anaconda环境中Spyder的版本。我发现这个回答提供了以下解决方法:

source activate my_env            # activate your target env with spyder installed
conda info -e                     # look up the directory of your conda env
find /path/to/my/env -name spyder # search for the spyder executable in your env
/path/to/my/env/then/to/spyder    # run that executable directly

我选择这种方式而不是修改PATH或在PATH中将可执行文件链接设置为更高的优先级,因为我觉得这样做不太可能破坏其他程序。但是,我确实在~/.bash_aliases中添加了对可执行文件的别名。


6

以下是Spyder官方在Github上的内容:

初学者方法

要在其他环境中使用Spyder的最简单方法就是直接将其安装到您想要使用其中包的环境中,并从那里运行它。这适用于所有Spyder版本,一旦IDE被安装,就不需要任何额外的配置;但是,这会导致多个安装程序来管理,并且不如另一个方案具有灵活性或可配置性。因此,在处理多个环境时,我们建议模块化方法。

模块化方法

从Spyder3.3.1开始,您可以安装模块化的spyder-kernels包到任何Python环境(conda环境,virtualenv/venv,系统Python,WinPython等)中工作,并将Spyder上的IPython控制台使用的Python解释器更改为指向该环境的Python可执行文件。

这需要一些准备和配置,但比完整的Spyder安装更轻,更快,避免了依赖冲突,并打开了新的工作流可能性。

要实现这一点,请按照以下步骤进行操作:

1- 激活您想要工作的环境(例如,使用conda activate myenv打开conda环境,使用source myenv/bin/activateworkon myenv打开virtualenv/venv等)

2- 在该环境中安装spyder-kernels包,使用以下命令:

3- 如果使用conda/Anaconda,请使用conda install spyder-kernels

4- 如果使用pip/virtualenv,请使用pip install spyder-kernels

5- 通过任一种方法安装后,在相同的环境内运行以下命令:

python -c "import sys; print(sys.executable)"

并复制该命令返回的路径(它应该以pythonpythonwpython.exepythonw.exe结尾,具体取决于您的操作系统)。

6- 取消激活该环境,激活安装Spyder的环境(如果您已将其安装在其自己的环境中),然后像往常一样启动Spyder。

7- 启动Spyder后,导航到首选项>Python解释器>使用以下解释器,然后将步骤3中的路径粘贴到文本框中。

8- 开始新的IPython控制台。在myenv环境中安装的所有包都应该可用。如果使用conda,则Spyder状态栏中应该显示当前环境的名称和其Python版本,将鼠标悬停在其上应该显示所选解释器的路径。


4

在Windows系统上:

您可以创建一个快捷方式来执行以下操作

Anaconda3\pythonw.exe Anaconda3\cwp.py Anaconda3\envs\<your_env> Anaconda3\envs\<your env>\pythonw.exe Anaconda3\envs\<your_env>\Scripts\spyder-script.py

然而,如果您从Anaconda shell内的venv启动spyder,则会自动为您在Windows菜单中创建此快捷方式。步骤如下:
  1. 使用此处提到的方法在您的venv中安装spyder。

  2. (在anaconda中:) activate testenv; 然而,在我的情况下,这一步是不需要的。

  3. 在Windows菜单中查找“最近添加”或搜索“spyder”,找到spyder (testenv)

  • [将其添加到任务栏] 和/或

  • [查找文件源位置] 并将其复制到您的桌面,例如从C:\Users\USER\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3(64位),可以找到任何环境的spyder链接。

现在您可以通过快捷方式直接启动spyder,无需打开anaconda prompt。


2
对我来说以下方法有效:
打开Anaconda,设置新环境,然后选择该环境并单击下面显示的播放图标:

enter image description here

然后点击打开终端,输入“spyder”,它将在选定的环境下打开spyder。
注意:对于我来说,直接从主页打开Sypder总是使用基础环境打开。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接