从命令行运行Python脚本时,导入语句无法工作

4
我需要从命令行中运行一个Python脚本(操作系统=Debian wheezy,Python版本=3.5)。
我使用PyCharm(社区版)编写脚本,并且在IDE内部工作正常。
我使用sys.path.append命令添加了包含所需包的目录,然后跟着这个导入语句: from package_name,file_name import ClassName 命令行中的错误消息为: ImportError: No module named 'package_name' enter image description here

你应该运行什么命令?如果你添加了shebang,你只需要调用python3 /path/to/my/script.py或者纯粹的/path/to/my/script.py - MisterMiyagi
当然,我使用的是Python3 /path/to/my/script.py!假设我调用脚本时出现错误,那么我就不会收到“ImportError”消息。 - Taktech
将名为 package_name 的文件夹添加到 PYTHONPATH。 - Hari
2个回答

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

然后使用导入该问题所在模块的import语句。

3

我找到了上面提出问题的答案,问题比我想象的要简单得多。

解决问题

  • 有许多不同目录中的 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 的更多信息,请查看此链接

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接