如何让 Spyder 直接从 Windows Explorer 打开 python 脚本(.py 文件)

How to get Spyder to open python scripts (.py files) directly from Windows Explorer

我最近在 Windows 7 (Anaconda 3-2.4.0-Windows-x86_64) 上安装了 Anaconda 发行版。与 IDLE 不同,我无法在 Spyder IDE 中右键单击并打开 py 文件。我必须先打开 Spyder,然后导航到该文件或将其拖放到编辑器中。有什么方法可以直接从 Widows Explorer 在编辑器中打开文件吗?

(这里是 Spyder 维护者) 此功能是我们 Windows installer 的一部分。换句话说,如果你用它安装 Spyder,那么你会在 Windows Explorer 的 Open with 菜单中看到一个新条目,它允许你直接在 Spyder 上打开 Python 文件。

不幸的是,我们无法对其他安装方法(即使用 Anaconda 或 pip 时)执行相同的操作。这就是为什么需要像此处其他答案中提到的那样实施黑客攻击。

我使用的另一款软件也遇到过类似的问题。

我解决此问题的方法是通过 打开方式 对话框将 .py 文件的文件关联设置为 C:\Anaconda\Scripts\spider-script.py。如果您现在尝试通过双击打开 File.py,您将收到类似

的错误消息

~\file.py is not a valid Win32 application.

这可以通过编辑 spyder-script.py 注册表项来解决:

HKEY_USERS\S-1-5-21-3559708500-1520960832-86631148-1002\Software\Classes\Applications\spyder-script.py\shell\open\command

并将默认值 "C:\Anaconda\Scripts\spyder-script.py" %1 替换为 "C:\Anaconda\python.exe" "C:\Anaconda\Scripts\spyder-script.py" %1。如果路径与您的计算机不同,请使用此键的搜索功能,当然,请使用适合您的 python 安装的路径。 spyder-script.py 现在应该在 python shell.

中执行

来自 ftype 的文档字符串,

...Within an open command string, %0 or %1 are substituted with the file name being launched through the association.

使用当前版本的 Anaconda (4.1.0),您只需在 Windows 文件资源管理器中右键单击 python 脚本并选择 "Open with"。第一次执行此操作时,您需要 select "Choose default program",然后浏览到 Anaconda 安装的脚本目录中的 spyder.exe。还要确保未选中 "Always use the selected program to open this kind of file",然后单击“确定”。从现在开始,当您从 Windows 文件资源管理器的右键单击菜单中 select "Open with" 时,spyder.exe 将始终列为选项之一。

在 Windows (10) 中对我来说效果很好的是将 *.py 文件与包含此行的批处理文件(比方说 "SpyderBATCH.bat")相关联:

[ANACONDA_FOLDER_PATH]\pythonw.exe" "[ANACONDA_FOLDER_PATH]\cwp.py" "[ANACONDA_FOLDER_PATH]" "[ANACONDA_FOLDER_PATH]/pythonw.exe" "[ANACONDA_FOLDER_PATH]/Scripts/spyder-script.py" %1  

其中 [ANACONDA_FOLDER_PATH] 必须替换为 Anaconda 文件夹的完整路径(通常在 "Program Files" 下)。

当双击 python 脚本(比方说 "file.py")时,Windows 的作用是传递给 SpyderBATCH,作为参数编号 %1, "file.py".

的完整路径

然后启动 Spyder 并在编辑器视图中显示脚本 "file.py"。

我在安装的 conda 中找不到 spyder.exe。但是在我的 users/.anaconda/navigator/scripts 中我发现了一个 spyder.bat 文件。使用它打开文件会打开 anaconda 提示符,不久之后 spyder 将打开文件。文件图标坏了,但对我有用。希望这可能有所帮助。

我想我也会 post 我的解决方案。

我在多个不同的环境中安装了 Spyder。不能简单的调用spyder-script.py脚本就不会报错,因为必须要激活环境

@echo off
call [YOUR_CONDA_PATH]\Scripts\activate.bat [YOUR_CONDA_PATH]
call conda activate [YOUR ENVIRONMENT]
call start [YOUR_CONDA_PATH]\envs\[YOUR ENVIRONMENT]\pythonw.exe "[YOUR_CONDA_PATH]\envs\[YOUR ENVIRONMENT]\Scripts\spyder-script.py" %1

如果您的基础环境中安装了 Spyder,您可以删除第二行并从第三行删除环境扩展。

希望对于任何遇到其他解决方案异常的人,这个解决方案可以通过正确激活环境来解决问题。

非常适合我!

如果您有兴趣将 spyder 图标(或任何其他图标)添加到 .py 文件中,并且如果您想避免 cmd 弹出窗口,我 found out the following workaround 这在没有管理员的情况下是可行的权利:

  1. 下载便携版Bat To Exe Converter(我用的是v3.0.10)。
  2. 在 Bat 到 Exe 转换器中打开您的自定义 .bat 文件。
  3. 在选项设置中,激活 "Icon" 并给出相应图标的路径(对我来说它在:.../AppData/Local/Continuum/anaconda3/Scripts/spyder.ico)。
  4. Exe-Format 设置为 Invisible(不再弹出空命令 window)
  5. 将您的 .bat 文件转换为 .exe 文件。
  6. 像往常一样,设置为使用新创建的 .exe 打开 .py 文件。

尽情享受吧!

环境: Windows10个, 康达 4.8.2, 蜘蛛 4.0.1, Python3.7

此问题与 anaconda 安装默认设置有关 - 默认情况下它不会在 PATH 中注册自己,因此不鼓励用户这样做。在路径中正确注册所有目录后,spyder.exe 按预期工作。

怎么知道,注册什么? 在 cmd 中找到 activate.bat 一个 运行 它,然后 运行 echo %PATH% 并手动注册所有提到 anaconda 的目录。

或者,在启用 PATH 注册的情况下重新安装 anaconda。 然后,您可以将 .py 文件与 spyder.exe 关联起来,关联将起作用。

我之所以回答,是因为我花了一个多小时才将此线程中提供的所有(伟大的)解决方案拼凑在一起以获得有效的解决方案(感谢 , and )。如果它多余,请原谅我,但我需要更直接的解释才能使它正常工作。

完整解决方案:

  1. 不要使用 Bat-to-Exe 转换器。您通过 google 找到的所有那些都包含一些不良恶意软件,我的计算机最终删除了我使用该方法制作的 .exe,因为它们中有木马。你也不需要它们。

  2. 创建一个新的 .bat 文件来启动 Spyder,如下所示。我是用 NotePad++

    做的
    @echo off
    call [YOUR_CONDA_PATH]\Scripts\activate.bat [YOUR_CONDA_PATH]
    call conda activate [YOUR ENVIRONMENT]
    call start [YOUR_CONDA_PATH]\envs\[YOUR ENVIRONMENT]\pythonw.exe "[YOUR_CONDA_PATH]\envs\[YOUR ENVIRONMENT]\Scripts\spyder-script.py" %1
    

    我的 [YOUR_CONDA_PATH] 只是 C:\Users\myusername\Anaconda3\。你的可能是相似的。 表示如果您的基本环境中安装了 Spyder,您可以删除第二行并从第三行删除环境扩展。 如果您双击这个 .bat 文件,它会在您想要的环境中打开 Spyder,您就会知道这个 .bat 文件是正确的。

  3. 打开一个 Anaconda 终端,然后“运行 作为管理员”并将您的 .py 文件与您刚刚创建的新 .bat 文件相关联,如下所示。正如其他人指出的那样,空格和引号需要准确地位于它们所在的位置。如果您不 运行 作为管理员,您将被拒绝访问 associate .py=Python.

assoc .py=Python 
ftype Python="[PATH_TO_YOUR.batfile]" "%1" %*

您应该已经准备就绪,可以双击 .py 文件并在 spyder 中打开它们。此解决方案不会将这些文件与 sypder 的图标相关联,但它会自动打开这些文件,而不会使您的 PC 感染恶意软件。

Windows10,Python3.7.7