SUP*_*hys 7 python numpy python-idle anaconda
我想使用numpy来运行我必须运行的程序,我想在IDLE IDE中执行它.我已经在线安装了numpy二进制文件,但是当我尝试在我的脚本中运行"import numpy"然后运行一些numpy命令时,但python shell返回错误说
Traceback (most recent call last):
File "/Users/Admin/Desktop/NumpyTest.py", line 1, in <module>
import numpy as np
ImportError: No module named numpy
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用pip来安装numpy,但是当我pip install numpy在bash shell中运行时,它说
Requirement already satisfied (use --upgrade to upgrade):
numpy in ./anaconda/lib/python2.7/site-packages
Run Code Online (Sandbox Code Playgroud)
我已经下载了Anaconda,我可以使用numpy发行版,但我真的很想在IDLE中这样做.
我该怎么办才能让Numpy在IDLE工作?我必须把它保存在某个地方吗?
ps我正在运行Osx 10.10.5 Yosemite
Ter*_*edy 15
标题在以下意义上具有误导性.您不希望将模块导入IDLE.您想将其导入到运行代码的python中.运行IDLE时,这当前是运行IDLE的python.要查找正在运行的python,以下内容应该可以在任何最近的python上直接或在IDE中的任何位置使用:
import sys; print(sys.executable)
Run Code Online (Sandbox Code Playgroud)
在我的Windows机器上以IDLE运行,我得到了
C:\Programs\Python36\pythonw.exe
Run Code Online (Sandbox Code Playgroud)
(w后缀是Windows特定的变体二进制文件,用于运行GUI程序而不会弹出空的控制台窗口.后面的内容应该省略.)
要将模块导入特定的python,必须为该特定的python安装它.最简单的方法是在控制台中运行与特定python的pip.例如,鉴于上面的可执行文件:
C:\Programs\Python36> python -m pip install numpy
Run Code Online (Sandbox Code Playgroud)
在*nix上,我相信可能必须首先运行python -m ensurepip为该python安装pip本身.
关于import pip; pip.main:pip被设计为命令行实用程序,用于初始化,执行一个函数并退出.main()是一个故意无证的内部实现细节.pip的作者不鼓励使用它,因为它是为一次调用设计的,后面是程序退出.当内部数据与已安装文件不同步时,多次调用将无法正常工作.
要在不影响anaconda配置的情况下安装软件包,您可以在IDLE中使用pip:
import pip
pip.main(["install","numpy"])
Run Code Online (Sandbox Code Playgroud)
虽然因为IDLE在刷新率上有点慢(至少在我的mac上),但是在结束之前隐藏输出可能是一个很大的速度提升:
import sys
import pip
import io
stdout_real = sys.stdout
sys.stdout = io.StringIO()
try:
pip.main(["install","kfksnaf"])
finally:
stdout_real.write(sys.stdout.getvalue())
sys.stdout = stdout_real
Run Code Online (Sandbox Code Playgroud)
请注意,这意味着所有标准输出都将显示在错误文本之后,如果出现问题可能会造成混淆,因此请先正常尝试并且只有在它严重滞后时才执行此操作.
另一方面,似乎anaconda已经从python.org安装了许多python的功能,为了减少它对你的机器的影响你应该看看使用默认Python而不是从终端调用时的Anaconda安装虽然这可能会破坏蟒蛇的功能,但如果你想这样做,反过来可能很难转回.