PYTHONPATH在Mac OSX上不使用IDLE

时间:2016-04-14 19:18:41

标签: python macos python-idle pythonpath

我在MAC OSX 10.11.4上安装Python 3.4时遇到了一个非常基本的问题。我已经在我的.bash_profile中设置了我的PYTHONPATH,并且从终端运行python时找到了路径,如果我导入sys并检查终端中的sys.path,我会看到我预期的路径。

但是,当我加载IDLE并查看路径浏览器时,PYTHONPATH条目不在sys.path中,我的代码也没有运行。有几个帖子谈论添加代码以添加到IDLE中的sys.path,但这是一个我不想做的黑客攻击。如何让IDLE将PYTHONPATH条目读入sys.path?

一些进一步的信息:在Windows上,我设置了一个可变的PYTHONPATH环境,路径确实显示在路径浏览器中。

这是OSX上IDLE的一个基本问题,还是我在安装中搞砸了一些东西,或者?

1 个答案:

答案 0 :(得分:0)

这种行为的原因是您拥有不同的环境变量范围。只有通过打开终端启动新的bash会话时,才会加载您在.bash_profile中设置的变量。但是当你通过点击它打开IDLE时,你会有一组不同的环境变量。这就是当你通过终端呼叫IDLE时它起作用的原因。这样,所有环境变量都会传递给您启动的进程。

至少有两种解决方案:

  1. 始终从终端
  2. 打开IDLE
  3. 更改通过gui启动的所有应用的环境变量。这可以通过编辑@Override public String toString() { StringBuilder sb = new StringBuilder(); if (startX == endX) { if (startY < endY) { for (int i = startY; i <= endY; i++) sb.append(i).append("x").append(startY).append(" "); } else { for (int i = endY; i <= startY; i++) sb.append(i).append("x").append(startY).append(" "); } } if (startY == endY) { if (startX < endX) { for (int i = startX; i <= endX; i++) sb.append(i).append("x").append(startY).append(" "); } else for (int i = endX; i <= startX; i++) sb.append(i).append("x").append(startY).append(" "); } if (startX > endX && startY > endY) { int i = startX; int j = startY; while (i >= endX) sb.append(i--).append("x").append(j--).append(" "); } else if (startX > endX && startY < endY) { int i = startX; int j = startY; while (i >= endX) sb.append(i--).append("x").append(j++).append(" "); } else if (startX < endX && startY > endY) { int i = startX; int j = startY; while (i >= endX) sb.append(i++).append("x").append(j--).append(" "); } else if (startX < endX && startY < endY) { int i = startX; int j = startY; while (i >= endX) sb.append(i++).append("x").append(j++).append(" "); } return sb.toString(); } 来完成(在Ubuntu中你可以修改/etc/launchhd.conf)。看here。但是,如果我没记错的话,这不适用于通过聚光灯打开应用程序。