Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么python模块在shell中工作,而在脚本中不工作?_Python_Python 2.7_Python Module - Fatal编程技术网

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

为什么python模块在shell中工作,而在脚本中不工作?,python,python-2.7,python-module,Python,Python 2.7,Python Module,我想做两个节目。我希望其中一个打印我居住城市的当前天气,我希望另一个从在线帐户获取数据并返回。对于这些脚本,我导入了yweather模块和requests模块。当我在shell中导入它们时,没有问题,但是当我运行脚本时,它会显示“ImportError:没有名为yweather的模块”。我做错了什么 外壳: >>> import requests >>> 脚本: Traceback (most recent call last): File "/Use

我想做两个节目。我希望其中一个打印我居住城市的当前天气,我希望另一个从在线帐户获取数据并返回。对于这些脚本,我导入了yweather模块和requests模块。当我在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 
回溯(最近一次呼叫最后一次):
文件“/Users/tim/Desktop/login.py”,第1行,在
导入请求
ImportError:没有名为请求的模块
yweather模块也会发生这种情况


谢谢

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

import sys
sys.version

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

可能您在脚本中使用的是虚拟环境,而模块没有安装在那里。

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

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

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

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

echo %PATH% 
如果在Python解释器中有不同的修复方法:

 import sys
 sys.path.append('your certain directory')
或者,也可以在命令提示下使用以下命令设置新路径:

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

希望这能有所帮助

我和你有同样的问题,但是关于“sklearn”软件包。 安装了
scikit-learn
sklearn
后,我在一个.py文件中运行
import-sklearn
,它返回“ModuleNotFoundError:没有名为“sklearn.emble”的模块;“sklearn”不是包”


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

我刚刚遇到了与您类似的情况。 正在导入的模块是opensbli。 以下是安装指南:

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


解决办法很简单。只需删除克隆并在不使用
sudo

的情况下再次克隆它,您确定在这两种情况下使用相同的解释器吗?您确定在运行脚本和提示时使用相同的Python版本吗?显示脚本的第一行。@sphere第一行正是我们在errorOK中看到的
导入请求
,那么脚本本身就没有像
#那样的shebang了/bin/python
。然后向我们展示如何在shell中运行脚本。它们都返回相同的结果。但在尝试了几件事之后,我发现我可以在使用终端时毫无问题地运行脚本。