【问题标题】:Python Modify OS Path VariablePython修改操作系统路径变量
【发布时间】:2017-03-25 06:08:41
【问题描述】:

我会试着把这句话说对,但这有点超出我的专业领域。

我在带有 Python 2.7 的 Windows 环境中使用 xgboost 库,这需要各种讨厌的编译和安装。

完成后,我遵循的说明告诉我,在实际导入库以供使用之前,我需要在 iPython 笔记本中修改 OS 路径变量。

说明告诉我运行以下命令:

import os

mingw_path = 'C:\\Program Files\\mingw-w64\\x86_64-5.3.0-posix-seh-rt_v4-rev0\\mingw64\\bin'

os.environ['PATH'] = mingw_path + ';' + os.environ['PATH']

然后我可以导入

import xgboost as xgb
import numpy as np
....

这行得通。我的问题。操作系统路径修改是否对路径变量进行了永久更改,还是每次我想像上面那样使用它时都需要修改 os 路径变量?

提前致谢。

编辑

这是我关注的instructions 的链接。我引用的部分即将结束。

【问题讨论】:

  • 请引用您所遵循的说明,以便我们了解上下文以及从开始到开始的过程。
  • AJK - 根据上面 EDIT 的要求添加
  • Windows 将环境变量保存在注册表中。在系统 -> 高级系统设置 -> 高级 -> 环境变量的控制面板中有一个应用程序可以修改它。这个应用程序允许为当前用户或系统修改Path 的值。当用户登录时,每个用户的 Path 值会附加到系统值中。控制面板应用程序还会发送一个窗口消息,告诉资源管理器从注册表中重新加载其环境变量。但是必须重新启动现有的 cmd shell 和大多数其他进程才能看到新的 Path 值。
  • 旁注:如果您想要可移植的代码(鉴于完全硬编码的 Windows 路径,这里显然不是这种情况),请使用os.pathsep,而不是硬编码的;。在 *NIX 系统上,PATH 分隔符为 :os.pathsep 将切换以匹配操作系统。
  • @eryksun 实际上,我被指示修改 Windows(计算机)PATH 变量,如您在说明中前面所述(上面在 EDIT 下提供的链接)。我不确定原因 - 这超出了我的知识范围。如果我修改了计算机 PATH 变量,我是否需要为 Python 添加此路径修改?说明建议我这样做,但也许不是?

标签: python windows operating-system xgboost


【解决方案1】:

os.environ 函数仅在 python/jupyter 控制台范围内:

这是我的 bash shell 中的证据:

$ export A=1
$ echo $A
1
$ python -c "import os; print(os.environ['A']); os.environ['A'] = '2'; print(os.environ['A'])"
1
2
$ echo $A
1

上面的 python 行,打印环境变量A,然后更改它的值并再次打印。

所以,如您所见,任何os.environ 变量在python 脚本中都会发生变化,但是当它退出时,bash shell 的环境不会发生变化。

另一种方法是修改您的用户或系统PATH 变量。但这可能会破坏其他事情,因为您正在做的事情可能会用 mingw 替换默认编译器,并且可能会出现并发症。我不是 Windows 专家,所以不确定那部分。

简而言之:

  • os.environ 操作仅对 python 进程是本地的
  • 不会影响任何其他程序
  • 每次要导入 xgboost 时都必须这样做

【讨论】:

  • 这太糟糕了。如果是这种情况,每次我打算使用该库时都必须记住抛出该代码,这很烦人
猜你喜欢
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 2017-07-16
  • 2015-01-15
  • 2016-03-23
相关资源
最近更新 更多