为什么python模块在shell中工作但在脚本中不工作?

时间:2017-06-16 11:47:56

标签: python python-2.7 python-module

我正在尝试制作两个节目。我想要一个人打印我所在城市的当前天气,我希望另一个人从在线帐户中获取数据并将其返回。对于那些脚本,我导入yweather模块和请求模块。当我在shell中导入它们时没有问题但是当我运行脚本时它会说" ImportError:没有名为yweather"的模块。我做错了什么?

外壳:

>>> import requests
>>> 

脚本:

Traceback (most recent call last):
  File "/Users/tim/Desktop/login.py", line 1, in <module>
    import requests
ImportError: No module named requests 

这也适用于yweather模块

谢谢

5 个答案:

答案 0 :(得分:1)

我和您有同样的问题,但包装为“ sklearn”。 安装scikit-learnsklearn之后,我在.py文件中运行import sklearn,它返回“ ModuleNotFoundError:没有名为'sklearn.ensemble'的模块;'sklearn'不是软件包”。

事实证明,我犯了一个有趣的错误。我将文件命名为“ sklearn.py”。因此,当我导入sklearn时,它可能只是尝试自行导入。我不应该将该文件命名为“ sklearn.py”。

答案 1 :(得分:0)

您确定它是相同版本的Python吗?尝试在shell和脚本中运行以下内容,比较结果。

import sys
sys.version

如果它们不相同,则安装了两个版本。

答案 2 :(得分:0)

也许您在脚本中使用虚拟环境,并且没有安装模块。

答案 3 :(得分:0)

如果你在Windows上,你可能已经安装了两次Python。您是否使用Anaconda安装Python并独立安装Python?

当您在命令提示符下键入Python时,您是否获得与解释器中的Python版本相同的Python版本?

如果是,则进入系统面板并删除在命令提示符下运行的Python版本的程序。

否则,您可以在命令提示符中查看您正在使用的pythonpath:

echo %PATH% 

如果在Python解释器中修复它的方法不同:

 import sys
 sys.path.append('your certain directory')

或者您也可以使用以下命令在命令提示符中设置新路径:

 setx PATH "%PYTHONPATH%;C:\python27"

希望这有帮助

答案 4 :(得分:0)

我刚刚遇到了和你类似的情况。 导入的模块是 opensbli。 这是安装指南:https://github.com/opensbli/opensbli/blob/version2.0/docs/installation_guide.pdf

我犯的错误是我首先通过/opt/命令将其克隆到sudo,然后移动到我的用户拥有的目录。问题是,因为我一开始用 sudo 克隆它,opensbli 目录的所有者是 root 而不是我的用户,这似乎是我什至无法在脚本中导入它的原因使用 sudo 命令。

修复很简单。只需删除克隆并在没有 sudo 的情况下再次克隆它。