为什么Python模块可以在shell中工作,但不能在脚本中工作?

问题描述 投票:0回答:5

我正在尝试制作两个程序。我想要一台打印我居住城市的当前天气,而我想要另一台从在线帐户获取数据并将其返回。对于这些脚本,我导入 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 

yweather 模块也会发生这种情况

python python-2.7 python-module
5个回答
4
投票

我有和你一样的问题,但是使用的是“sklearn”包。 安装了

scikit-learn
sklearn
后,我在 .py 文件中运行
import sklearn
并返回“ModuleNotFoundError:没有名为 'sklearn.ensemble' 的模块;'sklearn' 不是一个包”。

事实证明我犯了一个有趣的错误。我将文件命名为“sklearn.py”。因此,当我导入

sklearn
时,它可能只是尝试导入自身。我不应该将该文件命名为“sklearn.py”。


0
投票

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

import sys
sys.version

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


0
投票

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


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"

希望这有帮助


0
投票

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

我犯的错误是我首先通过

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

修复方法很简单。只需删除克隆并再次克隆即可,无需

sudo

© www.soinside.com 2019 - 2024. All rights reserved.