我正在尝试运行docker容器child1和child2。可以说我们有:
更新
|parent
|-----|child1/
src_folder/
__init__.py
mod1.py
|-----|child2/
__init__.py
symlink_target_folder
mody.py
test1_dir/
smfile.py
我做了类似的事情
ln -rs ~/parent/child1/src_folder ~/parent/child2/symlink_target_folder
在mody.py中,当我这样做时,
from symlink_target_folder import mod1
有用;
但是当我从test1_dir> smfile.py
from .child2.symlink_target_folder import mod1
它会抛出ImportError。
我想知道如何从该目录访问相同的模块?可以以某种方式将symlink_target_folder导出到PYTHONPATH。我已经做好了
导出PYTHONPATH = $ PYTHONPATH:/ symlink_target_folder
这样`我可以从mody.py做
from symlink_target_folder.mod1 import SmFoo
但我不认为这是由于PYTHONPATH造成的。只是symlink_target_folder和mody.py在同一文件夹中。
我该如何解决?有什么更好的方法来解决这个问题?我确实检查了一下
这是我解决这个问题的方法;
给定
|parent
|-----|child1/
src_folder/
__init__.py
mod1.py
|-----|child2/
__init__.py
symlink_target_folder
mody.py
test1_dir/
smfile.py
我somepth.pth
在child2文件下创建了以下文件:
symlink_target_folder
然后在child2脚本下创建一个simplepth.py,如下所示:
import site
import os
site.addsitedir(os.path.dirname(__file__))
当您运行child2> simplepth.py时,它将添加simplepth所在的目录和任何自然指向/ child1 / srcFolder的.pth文件,并将其导入sys.path。
现在您可以简单地执行以下操作:
import mod1
解决了我的问题。
因此,如果您只想运行test1_dir / smFile.py,则只需添加test1_dir的父目录并将其添加到site.addsitedir,然后导入mod1即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句