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
。但它仍然会产生同样的错误 您需要以下步骤
\uuuu init\uuuu.py
import sys
sys.path.append('../')
import lib.util1 as u1
从src dir运行p1.py文件。希望它能起作用
编辑:
如果不想添加sys.path.append(“../”)
,请从此资源在env var中设置PYTHONPATH。
您需要执行以下步骤
\uuuu init\uuuu.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)
并比较输出。