将自定义目录添加到PYTHONPATH

时间:2016-04-19 19:09:57

标签: python macos bash python-2.7 pythonpath

我一直在尝试根据此帖Permanently add a directory to PYTHONPATH上的建议向PYTHONPATH添加自定义目录。我在Mac上使用bash,如果相关的话。这就是我所做的:

  1. open ~/.bash_profile
  2. export PYTHONPATH="${PYTHONPATH}:/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages"并保存
  3. source ~/.bash_profile
  4. 有两个问题:

    1. 当我在Python IDE中运行sys.path时,预期的目录仍未显示。
    2. 当我在终端启动Python并在那里运行sys.path时,dir确实出现了,但所有其他目录都与我从上一步得到的不匹配。
    3. 具体来说,这就是我在IDE中运行sys.path所得到的。无法找到预定的目录。

        
          
            

      sys.path中       ['&#39 ;,        ' /Applications/Spyder-Py2.app/Contents/Resources' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python27.zip' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat-darwin' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat-mac' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/plat-mac/lib-scriptpackages' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-tk' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-old' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/lib-dynload' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/site-packages.zip' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/site-packages' ;,        ' /Applications/Spyder-Py2.app/Contents/Resources/lib/python2.7/IPython/extensions' ;,        ' /Users/Zhengnan/.ipython']

          
        

      这就是我从终端运行sys.path时获得的。预期的目录是列表中的第三个元素。

        
          
            

      sys.path中       ['',' /用户/ Zhengnan',' /Users/Zhengnan/Library/Python/2.7/lib/python/site-packages',&# 39; /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip' ;,' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7& #39;,' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin' ;,' /System/Library/Frameworks/Python.framework /Versions/2.7/lib/python2.7/plat-mac' ;,' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages& #39;,' /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python' ;,' /System/Library/Frameworks/Python.framework/Versions/2.7 /lib/python2.7/lib-tk',' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old' ;,' /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload' ;,' /System/Library/Frameworks/Python.framework/Versions/2.7/Extras / LIB /蟒/ PyObjC']

          
        

      我应该提一下,我想将此自定义目录添加到PYTHONPATH的原因是每次pip install一个包时,它都会安装在/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages中,而我不会{每次运行脚本时都要sys.path.append。请指教。感谢。

1 个答案:

答案 0 :(得分:2)

这里有很多事情发生。

从根本上说,您在IDE中使用的Python不是您在终端中使用的Python。这就是var endRow = sheet.getRange("B5").getValue() + 9; var formula = "=arrayformula(if(ISBLANK(Grades!A9:A" + endRow + ",, vlookup(Grades!A9:A" + endRow + ", Grades!A9:G" + endRow + ", 4, FALSE)))"; sheet.getRange("A2").setFormula(formula); 没有把东西放在正确位置的原因。

最简单的解决方案就是修改您的pip install环境变量,这样当您在终端中键入$PATH时,您将获得与IDE使用的版本相同的版本。我的猜测是你的IDE python类似于python,在这种情况下你会摆脱/Applications/Spyder-Py2.app/Contents/Resources/bin/python设置你的PYTHONPATH并添加:

.bash_profile

假设export PATH="/Applications/Spyder-Py2.app/Contents/Resources/bin:$PATH" 在同一个地方可用,您现在应该可以pip一些事情,而无需使用pip install进行捣乱。

这里的另一个问题是在shell中设置的环境变量(例如,在PYTHONPATH中)对应用程序可见的环境没有影响。 可能设置OS X应用程序可见的环境变量(例如,参见this question),但它很棘手,我不建议。

备用解决方案(如果可用)只是告诉您的IDE应该使用哪个.bash_profile,并将其指向终端中可见的任何一个。