Python3.6在目录外运行脚本时导入错误。在同一目录中正确运行
我有以下设置Python3.6在目录外运行脚本时导入错误。在同一目录中正确运行,python,python-3.x,Python,Python 3.x,我有以下设置 ~/python/pyct/lib/ ├── printer.py └── utils.py ~/apps/proj/ └── main.py ~/python/pyct/lib/utils.py ~/python/pyct/lib/printer.py ~/apps/proj/main.py PYTHONPATH的值=$HOME/python 当我在~/python/pyct/lib/内的文件中导入printer.py时,一切都按预期运行 从~/apps/proj/运行mai
~/python/pyct/lib/
├── printer.py
└── utils.py
~/apps/proj/
└── main.py
~/python/pyct/lib/utils.py
~/python/pyct/lib/printer.py
~/apps/proj/main.py
PYTHONPATH的值=$HOME/python
当我在~/python/pyct/lib/内的文件中导入printer.py时,一切都按预期运行
从~/apps/proj/运行main.py时,出现以下错误:
Traceback (most recent call last):
File "main.py", line 1, in <module>
from pyct.lib.printer import printer
File "~/python/pyct/lib/printer.py", line 1, in <module>
import utils
ModuleNotFoundError: No module named 'utils'
我尝试过使用相对导入,但不起作用。我已经使用了资源,但可以让场景正常工作
我知道在导入中使用绝对路径可以解决这个问题,但是我想用多个python文件创建一个目录,它将充当一个库。然后在目录之外的其他地方使用核心组件
我如何才能实现上述场景的工作。
了解python导入的任何资源都将非常有用 这里的问题是~/python/pyct/lib/printer.py在其工作目录中查找名为utils的模块,而不是在其自身所在的目录中
您可以在~/python/pyct/lib/printer.py中使用相对导入:
python随后将查找与导入模块路径相关的模块,而不是工作目录。谢谢。这很有魅力。我忽略了这样导入模块。我过去只使用from语句导入函数/类。
import utils # this breaks sometimes
# import pyct.lib.utils as utils # this works always
def printer(content):
utils.printFunc(content)
from pyct.lib.printer import printer
printer("hi")
Traceback (most recent call last):
File "main.py", line 1, in <module>
from pyct.lib.printer import printer
File "~/python/pyct/lib/printer.py", line 1, in <module>
import utils
ModuleNotFoundError: No module named 'utils'
from . import utils