【问题标题】:import statement is not working when running python script from the command line从命令行运行 python 脚本时导入语句不起作用
【发布时间】:2016-11-11 13:49:06
【问题描述】:

我需要从命令行运行 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'

【问题讨论】:

  • 你运行什么命令?如果你添加了一个 shebang,你应该可以只打电话给python3 /path/to/my/script.py 或普通的/path/to/my/script.py
  • 我当然使用 python3 /path/to/my/script.py !假设我错误地调用了我的脚本,那么我不会收到ImportError 消息。
  • 将pacakage_name的文件夹添加到PYTHONPATH

标签: python shell command-line python-import


【解决方案1】:

如果您正在运行任何 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') 

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

【讨论】:

    【解决方案2】:

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

    解决问题

    • 在不同的目录中有许多 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

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

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      相关资源
      最近更新 更多