使用虚拟环境运行Spyder

8
我是一个对Python新手,正在学习一些基本概念。我来自PHP背景。以下是我面临的问题的定义/分解:
我安装了anaconda,其中安装了许多库和工具到我的系统中。这是我的“主要Python环境”。
然后我创建并加载了一个虚拟环境。在这个虚拟环境中,我加载了一些我想要的包,如pip install simplekml、pip install ipython等。
现在我打开spyder,在iPython控制台中尝试import simplekml,但它给了我一个导入错误。我在网上阅读了有关此问题的信息,并指出,在spyder中,我需要指向我的虚拟环境中的python(使用tools> preferences> python interpreter),或者我应该在我的虚拟环境中进行pip install spyder,并使用那个版本。
我都尝试了。我在我的虚拟环境中安装了spyder,然后在iPython控制台中,当我尝试import simplekml时,我收到了错误提示:
ModuleNotFoundError: No module named 'simplekml'

如果我进入终端并打开iPython,然后输入相同的内容,则可以正常运行。如何将该终端加载到Spyder中?
我已经为此苦苦挣扎了数小时,因此非常感谢您提供的任何帮助!

3
不要混淆anacondavirtualenv,使用其中一个,而不是两者兼用。 - alfonso.kim
1
没错。请谷歌一下 conda 环境 并学习如何使用它们,而不是 virtualenv。我认为这应该能解决你的问题。 - Carlos Cordoba
我在每个虚拟环境中都安装了Spyder,并且它运行良好。当然,我并不声称这是最佳方法... - Maciek
2个回答

1
如果您已经安装了Anaconda,建议按照@carlos-cordoba在评论中提到的方式创建一个Anaconda环境:
conda create --name pyflakes spyder simplekml ipython

这将创建一个包含spyder、simpleklm和ipython的环境pyflakes
然后,您只需使用source activate pyflakes或者如果您在Windows上,则使用activate pyflakes激活该环境,并从中运行spyder。
有关anaconda环境的更多信息,请参见文档
编辑:添加virtualenv示例。
要使用virtualenv,可以尝试以下命令:
$ pip install virtualenv
$ cd my_project_folder
$ virtualenv my_project
$ source my_project/bin/activate
$ pip install spyder simpleklm ipython

来源


谢谢你的回答。我会尝试一下。不过我还有一个后续问题:我能否使用virtualenv做同样的事情?我提到virtualenv的原因是因为还有另一个盒子需要运行一些东西,但那里没有conda(由于其他原因我无法在那里安装),只有virtualenv。我想让spyder在那个盒子上与simplekml一起工作... - Undefined Variable
@UndefinedVariable 我编辑了我的回答,希望能有所帮助。 - Hami
不幸的是,它失败了,并抱怨已经有一个(全局)spyder:Requirement already satisfied: spyder in /usr/local/lib/python2.7/dist-packages。有什么办法可以强制在我的虚拟环境中安装第二个本地spyder吗? - mcExchange
@mcExchange 您可以使用 pip --user install - gruentee
在venv中安装Spyder后,如何访问和启动该Spyder实例,而不是默认的Anaconda实例。 - Rajen Raiyarela
我建议你最好切换到Anaconda https://conda.io/docs/user-guide/getting-started.html。否则,一旦你运行了`activate`命令,你就会进入那个环境,如果你运行`spyder`,它应该会启动来自该环境的Spyder。 - Hami

0

您需要为每个虚拟环境创建不同的spyder.ini文件。 在这个文件中,Spyder会保存要使用的Python解释器等信息。 我没有找到命令行选项来指定要使用哪个spyder.ini文件,所以我创建了一个小的bash脚本:

enter code here`echo "使用我的spyder.ini启动Spyder..." cp ~/.config/spyder-py3/spyder.ini temp.spyder.ini cp /spyder.ini ~/.config/spyder-py3/spyder.ini echo "正在启动Spyder..." /usr/bin/spyder3 --new-instance -p echo "Spyder已关闭。正在恢复原始spyder.ini文件" cp ~/.config/spyder-py3/spyder.ini /spyder.ini cp temp.spyder.ini ~/.config/spyder-py3/spyder.ini rm temp.spyder.ini
我将它保存在虚拟环境的bin文件夹中,命名为spyder3,这样当我调用spyder3时,它会首先替换我想要的sypder.ini文件,并在关闭spyder时恢复原始文件。-p部分是可选的。

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