刚刚(2023 年 10 月),我在 Windows 10 上重新安装了 Anaconda 以便安装 Python 3.9、Pyspark 和 Spyder。康达酒店 环境是“py39”。我刚刚在 2023 年 8 月在另一台笔记本电脑上执行了此操作, 所以我很熟悉我必须做什么。基本上,我复制了 “Spyder (py39)”快捷方式,以便我可以将其指向我自己的 CMD 脚本 设置 PySpark 环境变量。
我发现八月到十月之间情况发生了很大变化。 一方面,用户特定的 Anaconda 主目录从
%USERPROFILE%\anaconda3
至 %USERPROFILE%\AppData\Local\anaconda3
。
这很容易处理;我只是将一个 CONDA_HOME
变量指向
来自 CMD 命令行的新位置:
> setx CONDA_HOME "%USERPROFILE%\AppData\Local\anaconda3"
我将复制的“Spyder (py39)”快捷方式命名为“SpyderSpark (py39)” 并将目标字段设置为我自己的
SpyderSpark.cmd
脚本:
set "HADOOP_HOME=%USERPROFILE%\AppData\Local\Hadoop\2.7.1"
set "PYSPARK_DRIVER_PYTHON=Python"
set "PYSPARK_PYTHON=Python"
REM The following are from querying environment variables from
REM the Python REPL after launching pyspark from Conda prompt
set "JAVA_HOME=%CONDA_HOME%\envs\py39\Library"
set "SPARK_HOME=%CONDA_HOME%\envs\py39\lib\site-packages\pyspark"
REM The following was in the Target field of the original
REM "Spyder (py39)" shortcut from the Aug/2023 installation
start ""^
"%CONDA_HOME%\pythonw.exe"^
"%CONDA_HOME%\cwp.py"^
"%CONDA_HOME%\envs\py39"^
"%CONDA_HOME%\envs\py39\pythonw.exe"^
"%CONDA_HOME%\envs\py39\Scripts\spyder-script.py"
令人费解的是,在新的“Spyder (py39)”快捷方式中 2023 年 10 月安装,目标字段以以下内容结尾 而不是上面的最后一条物理线。
"%CONDA_HOME%\env"
这代替:
"%CONDA_HOME%\envs\py39\Scripts\spyder-script.py"
路径
%CONDA_HOME%\env
不对应于任何现有文件或
文件夹。由于目标字段中没有任何内容引用
Spyder,我希望弹出“Spyder (py39)”快捷方式
执行的时候报错,但是没有。它启动 Spyder GUI
就好了。
由于我在
start
中使用上述 SpyderSpark.cmd
命令,我
真的很想知道 为什么较新的 Oct/2023 start
命令指定了一个
不存在的路径,根本没有提及 Spyder,但是
仍然可以正常启动 Spyder。感谢任何可以的光
对此感到震惊。
P.S. 上面的
SpyderSpark.cmd
脚本,参考
spyder-script.py
,启动 Spyder,但我正在排除故障
无法实例化 SparkSession 对象。我认为这是
一个单独的问题。此发布问题的答案可能会有所帮助。
部分答案是快捷方式的目标字段限制为 260 个字符。看起来我并没有在发布的问题中突破该限制,但那是因为我使用 %CONDA_HOME%
"%CONDA_HOME%\env"
脚本中明确使用最终物理行 SpyderSpark.cmd
,则它不起作用。我需要完整的
"%CONDA_HOME%\envs\py39\Scripts\spyder-script.py"
。
同样,如果查看快捷方式
Spyder
的目标字段 [not
Spyder (py39)
],最终的物理行以 %CONDA_HOME%\Scripts\spyder-script.p
结尾,缺少扩展名“py”中的“y”。该文件的基本名称更接近完整的
spyder-script.py
并且它恰好有 259 个字符长。缺少的“y”是第 260 个字符,这是字段限制。它可能存在但无法访问。
与快捷方式
Spyder (py39)
相同,其目标字段以 %CONDA_HOME%\env
结束于第 259 个字符。路径的其余部分必须存在,因为快捷方式有效,但由于快捷方式 GUI 面板的限制,路径的其余部分可能无法访问。
这只是基于证据的有根据的猜测。我欢迎更正和更好的解释,例如,如何在无法通过 GUI 面板访问的情况下在“目标”字段中显示文本(以及如何做到这一点,之前是否已观察到)。