将自定义目录添加到PYTHONPATH

5
我一直在尝试按照这篇帖子的建议(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
存在两个问题:
  1. 当我在Python IDE中运行sys.path时,预期的目录仍然没有显示出来。
  2. 当我在终端中启动Python并运行sys.path时,该目录显示出来了,但是所有其他目录与之前一步得到的不匹配。
具体而言,这是我从IDE中运行sys.path得到的内容。找不到预期的目录。

sys.path ['', '/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 ['', '/Users/Zhengnan', '/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/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', '/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/python/PyObjC']
我想提一下,我想要将自定义目录添加到PYTHONPATH中的原因是每次我进行pip安装包时,它们都会被安装在/Users/Zhengnan/Library/Python/2.7/lib/python/site-packages中,我不想在每次运行脚本时都进行sys.path.append操作。请给予建议。谢谢。 ```

请参考以下链接:https://dev59.com/3nVC5IYBdhLWcg3w9GHM - cdarke
1个回答

2

这里涉及到很多内容。

从根本上说,你在IDE中使用的Python与你在终端中使用的Python不同。这就是为什么pip install不能将东西放在正确的位置的原因。

最简单的解决方案就是修改你的$PATH环境变量,这样当你在终端中输入python时,你会得到与你的IDE使用的相同版本。我猜测你的IDE的python是像/Applications/Spyder-Py2.app/Contents/Resources/bin/python这样的,如果是这样,你需要在你的.bash_profile中取消设置你的PYTHONPATH并添加:

export PATH="/Applications/Spyder-Py2.app/Contents/Resources/bin:$PATH"

假设pip已经在同一位置可用,您现在应该能够使用pip install安装软件包而无需处理PYTHONPATH问题。
另一个问题是,通过shell(例如在.bash_profile中)设置的环境变量对应用程序可见的环境没有影响。虽然有可能设置环境变量以使其对OS X应用程序可见(例如,请参见此问题),但这很棘手,我不建议这样做。
如果可行的话,另一种解决方案就是告诉IDE应该使用哪个python,并将其指向终端中可见的任何一个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接