以前曾问过与此类似的问题,但我只能找到问题的解释,而不是解决方案。
我正在运行OS X Mavericks,并学习python。我安装了Python但很少知道它是内置的。
我使用sublime文本作为我的IDE,我尝试安装一些库(scipy,numpy,matplotlib)。在Sublime Text中,当我导入库时,它们可以工作。我可以导入scipy并完美打印scipy.pi。但是,当我在终端中运行它时,它说它找不到那些库。
其他人已经解释说终端正在运行操作系统的python并且找不到库,但没有解释应该在哪里放置库以使其在终端中正常运行。
感谢任何帮助,谢谢
答案 0 :(得分:1)
您的问题的简短答案是您需要修改PYTHONPATH环境变量以指向您想要的模块。如果你正在使用bash(你最有可能),你可以这样做:
export PYTHONPATH=$PYTHONPATH:'/path/to/your/modules/'
但是,我建议你运行你安装的python版本,而不是运行OS X版本的python。如果您使用python.org中的.dmg安装,您可以在终端中输入'python2.7'或'python3'(取决于您安装的版本),一切都会正常工作。
如果你愿意,你可以设置命令'python'来运行你安装的python版本而不是OS X默认python,方法是在〜/ .bash_profile文件中输入别名或修改你的PATH环境变量。更简单的选择是使用安装后位于python文件夹中的“更新Shell配置文件”脚本。
您可以考虑再考虑一种可能性 - 考虑使用virtualenv设置虚拟环境,并在其中安装scipy,numpy等。当你刚开始时,这个选项可能比它的价值更麻烦,但从长远来看,它是一项很好的技能,可以让你的开发更清洁,更容易维护。
最后,因为听起来你可能正在进行科学计算,你可以看一下预先安装了许多科学软件包的EPD free,作为奖励将自动为你设置必要的shell变量。
答案 1 :(得分:1)
您需要准确了解您从Sublime Text调用的内容。此解决方案仅适用于其他人所说的是真的,并且Sublime Text正在调用另一个与您从shell调用的不同的python解释器。
第1步
快速而又脏的方式来找出Sublime Text正在调用的内容:
这应该会给你一个错误信息:
/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: can't find '__main__' module in ''
[Finished in 0.1s with exit code 1]
[shell_cmd: python -u ""]
[dir: /Users/someuser/Downloads]
[path: /usr/bin:/bin:/usr/sbin:/sbin]
第一行是为您提供Sublime Text正在使用的python解释器的路径。
第2步
接下来,您应该在命令行中找到您要调用的内容:
% which python
/usr/local/bin/python
使用上面的信息,您可以找到/ usr / local / bin / python所在的位置:
% ls -la /usr/local/bin/python
lrwxr-xr-x 1 someuser wheel 33 Jul 29 23:14 /usr/local/bin/python@ -> ../Cellar/python/2.7.5/bin/python
如果两条路径相同,则停止:我的解决方案不适用于您的情况。
第3步
如果两个路径 不同,那么您需要专门使用sublime文本正在调用的python解释器的路径:
% echo 'print "hello"' | /usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
hello
或者,如果您只想使用python在命令行中调用,那么您可以更改“哪个python”(例如/ usr / local / bin)所出现的链接。
e.g。 (不要复制和粘贴 - 请了解路径的来源和原因):
ln -s PATH_TO_YOUR_PYTHON / usr / local / bin / python
有关在OSX上更改默认python的更好讨论,请参阅“How to change which Python version gets used in Snow Leopard?”。
另一件事 - 如果你想从Sublime Text运行不同的python,那么看看this。