Python:从命令行运行时包含库文件夹

Python:从命令行运行时包含库文件夹,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我有一个目录结构: root_dir ├── src │   └── p1.py └── lib ├── __init__.py ├── util1.py └── util2.py 我想运行src/p1.py,它使用import语句import lib.util1作为u1使用lib/util1.py 当我使用PyCharm时,它运行得很好,但我也想从命令行运行它。如何从命令行运行程序 我试过cd root\u dir然后python src/p1.py 但它

我有一个目录结构:

root_dir
 ├── src
 │   └── p1.py
 └── lib
     ├── __init__.py
     ├── util1.py
     └── util2.py
我想运行
src/p1.py
,它使用import语句
import lib.util1作为u1
使用
lib/util1.py

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

我试过
cd root\u 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
回溯(最近一次呼叫最后一次):
文件“/src/p1.py”,第1行,在
将lib.util1导入为u1
ImportError:没有名为lib.util1的模块
如何从命令行运行python程序
src/p1.py


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

您需要以下步骤

  • 在lib文件夹中添加
    \uuuu init\uuuu.py
  • 在顶部的p1.py文件处添加此行

    import sys
    sys.path.append('../') 
    import lib.util1 as u1
    
    从src dir运行p1.py文件。希望它能起作用

    编辑:

    如果不想添加
    sys.path.append(“../”)
    ,请从此资源在env var中设置PYTHONPATH。
    您需要执行以下步骤

  • 在lib文件夹中添加
    \uuuu init\uuuu.py
  • 在顶部的p1.py文件处添加此行

    import sys
    sys.path.append('../') 
    import lib.util1 as u1
    
    从src dir运行p1.py文件。希望它能起作用

    编辑:

    如果不想添加
    sys.path.append(“../”)
    ,请从此资源在env var中设置PYTHONPATH。

    @warl0ck这也会产生相同的错误。您可以通过在此目录中添加
    \uuuu init\uuuuuuuuuupy
    来创建python包。然后您可以像往常一样使用import语句。关于:
    PYTHONPATH=${PYTHONPATH}:。python src/p1.py
    ?@warl0ck这也会产生相同的错误。您可以通过在此目录中添加
    \uuu init\uuu.py
    使
    lib
    成为python包。然后您可以像往常一样使用import语句。关于:
    PYTHONPATH=${PYTHONPATH}:。python src/p1.py
    ?我在Stackoverflow上见过类似的解决方案。但我不想更改源文件,因为它在PyCharm中运行良好。可以告诉python包含lib文件夹吗?我认为,既然PyCharm能够做到这一点,那么在不改变源代码的情况下就一定能够做到。这是因为如果在PyCharm的终端中运行python,它的sys.path就不同了。尝试在PyCharm的终端和普通终端中运行交互式python,然后:
    import sys
    print(sys.path)
    并比较输出。我在Stackoverflow上见过类似的解决方案。但我不想更改源文件,因为它在PyCharm中运行良好。可以告诉python包含lib文件夹吗?我认为,既然PyCharm能够做到这一点,那么在不改变源代码的情况下就一定能够做到。这是因为如果在PyCharm的终端中运行python,它的sys.path就不同了。尝试在PyCharm的终端和普通终端中运行交互式python,然后:
    import sys
    print(sys.path)
    并比较输出。