【问题标题】:Python: include library folder when running from command linePython:从命令行运行时包含库文件夹
【发布时间】:2018-12-13 10:45:52
【问题描述】:

我有一个目录结构:

root_dir
 ├── src
 │   └── p1.py
 └── lib
     ├── __init__.py
     ├── util1.py
     └── util2.py

我想运行src/p1.py,它使用lib/util1.py,使用导入语句import lib.util1 as u1

当我使用 PyCharm 时它运行良好,但我也想从命令行运行它。如何从命令行运行程序?

我试过cd root_dir 然后python src/p1.py

但它会产生以下错误:

Traceback (most recent call last):
  File "./src/p1.py", line 1, in <module>
    import lib.util1 as u1
ImportError: No module named lib.util1

如何从命令行运行python程序src/p1.py

编辑:根据@Sumedh Junghare 的建议,在 cmets 中,我在 lib 文件夹中添加了 __init__.py。但它仍然会产生同样的错误!

【问题讨论】:

  • @warl0ck 这也会产生同样的错误。
  • 您可以通过在此目录中添加__init__.py 来制作lib 一个python 包。然后你就可以像往常一样使用 import 语句了。
  • 怎么样:PYTHONPATH=${PYTHONPATH}:. python src/p1.py

标签: python python-3.x python-2.7


【解决方案1】:

您需要以下步骤

  1. 在 lib 文件夹中添加 __init__.py

在顶部的 p1.py 文件中添加这一行

import sys
sys.path.append('../') 
import lib.util1 as u1

从 src 目录运行 p1.py 文件。希望它会起作用。

编辑:

如果您不想添加 sys.path.append('../'),请从此资源的 env-var 中设置 PYTHONPATH。 How to add to the pythonpath in Windows?

【讨论】:

  • 我在 Stackoverflow 上看到过类似的解决方案。但我不想更改源文件,因为它在 PyCharm 中运行良好。是否可以告诉 python 包含 lib 文件夹?我想既然PyCharm能做到,那一定是可以不改源码的。
  • 这是因为如果你在 PyCharm 的终端中运行 python,它有不同的 sys.path。尝试在 PyCharm 的终端和普通终端中运行交互式 python,然后:import sysprint(sys.path) 并比较输出。
【解决方案2】:

改进 Saiful 的答案,您可以执行以下操作,这将允许您从任何工作目录运行您的程序

import sys
import os
sys.path.append(os.path.join(os.path.realpath(os.path.dirname(__file__)), "../"))
import lib.util1 as u1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多