从命令行运行python脚本时,import语句不起作用

时间:2016-07-08 22:06:13

标签: python shell command-line python-import

我需要从命令行运行一个python脚本(OS = Debian wheezy,python -version 3.5)。

我使用PyCharm(社区版)编写脚本,它在IDE内部工作。

我使用sys.path.append命令添加包含我想要的包的目录,然后使用此导入行跟随它:

from package_name,file_name import ClassName

命令行中的错误消息: ImportError: No module named 'package_name'

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您正在运行任何xxx.py文件,并且在由任何IDE运行的相同脚本下都能正常运行,则遇到导入错误,则可能是路径问题。

对我有用的是: 转到显示导入模块问题的文件,然后在导入模块(已看到该问题)之前,使用append将模块路径添加到sys。

例如,我正在从conf路径运行脚本文件,并且我的脚本正在导入位于\ scripts \ Setup \中的模块,因此将模块的路径附加如下。

import sys
import os
conf_path = os.getcwd()
sys.path.append(conf_path)
sys.path.append(conf_path + '\scripts\Setup') 

然后使用引发问题的模块的导入语句。

答案 1 :(得分:0)

我找到了上面问题的答案,问题比我想象的容易得多。

解决问题

  • 在不同的目录中有许多python包
  • 你的脚本需要一些/所有的包,这些包不在python安装的标准lib目录中(例如:prefix/lib/pythonVersion)。

<强>解决方案

短期解决方案

只要您使用IDE(例如PyCharm),在代码中添加就足够了:

import sys sys.path.append("path/to/package")

只要您必须从命令行运行脚本,您将获得上述问题中提到的ImportError

更好的解决方案

使用以下命令将软件包和python安装的目录添加到shell-profile(例如:.bashrc):

export PYTHONPATH=prefix/lib/pythonVersion:/path/to/packages

要获取有关PYTHONPATH的更多信息,请查看此link

在这种情况下,您不需要在代码中附加包的路径:)