在没有提升权限的情况下在 Anaconda 下的 Windows 上设置 PYTHONPATH

Setting PYTHONPATH on Windows under Anaconda without elevated privileges

我有一台 Windows 7 机器,为本地用户安装了 32 位 anaconda。安装按预期工作:它允许我从命令行 运行 python 和 pip,切换环境等

我的文档中还有一个我编写的代码库。我想在我的 PYTHONPATH 中添加一个条目,例如 C:\Users\username\Documents\MyLib。这通常不是问题,但我没有这台(工作发布的)计算机通过 Windows UI.

修改环境变量所需的提升权限

我正在寻找一种设置 PYTHONPATH 的方法。我只需要它在 anaconda 环境中工作(即,我只想能够使用该特定解释器导入我的库)。在我的脚本中使用 sys.path.append 的解决方案是不可接受的。但是,我可以在某些脚本中执行 sys.path.append,只要我 运行 python myscript.py.

就会自动执行

我怀疑有一种方法可以绕过通过 Windows UI 施加的权限限制,因为 运行ning conda info -a 显示 Anaconda 安装程序能够将项目插入 PATH,特别是 C:\Users\username\AppData\Local\Continuum\Anaconda3\Library\bin;....

在用于修改用户帐户的控制面板window 中,应该有一个选项可以为当前用户更改环境变量。它在 Windows 的某些版本上被破坏了,但如果它能工作,它是最简单的选择。

如果这不起作用,下一个最简单的选择是在命令提示符下使用 setx.exe。它默认为当前用户。例如:

setx.exe PYTHONPATH "C:\Users\username\Documents\MyLib"

您也可以使用 reg.exe 在注册表中手动设置变量。但与上述选项不同的是,这不会将 WM_SETTINGCHANGE 消息广播到顶级 windows。当资源管理器看到该消息时,它会从注册表中重新加载其环境。没有它,您将不得不注销并重新登录才能看到更新的环境变量。话虽如此,这是一个使用 reg.exe:

的示例命令
reg.exe add HKCU\Environment /f /v PYTHONPATH /d "C:\Users\username\Documents\MyLib"

我不喜欢永久设置 PYTHONPATH,因为 Python 的每个版本都使用相同的变量。我宁愿创建一个批处理脚本的快捷方式,以我需要的方式配置环境以完成特定任务。例如:

@echo off
set PYTHONPATH=C:\Users\username\Documents\MyLib
C:\Users\username\Documents\MyEnv\Scripts\activate.bat

创建此批处理脚本的快捷方式。然后右击快捷方式select"Properties"。修改目标为运行cmd.exe /k "path\to\the\script.bat"

既然你说了,你主要使用Spyder,以下可能有用:

Spyder 提供了通过集成管理器管理 PYTHONPATH 的选项。