在此目录树中:
mod
| __init__.py
|-mod1
|-__init__.py
|-ceva.py
|-mod2
|- __init__.py
|-altceva.py
所有 __ init __。py 文件都为空。
PYTHONPATH = $ PYTHONPATH:PATH_TO_PARENT /修改
ceva.py 文件包含我需要导入的功能。
如何在 altceva.py 文件中导入该功能(来自 ceva.py )?
在 altceva.py 中执行from mod.mod1.ceva import foo
似乎有效,但前提是我从 mod 目录运行python mod2/altceva.py
,但不是从 MOD / MOD2 即可。如何从 mod 和 mod / mod2 路径进行导入?
答案 0 :(得分:0)
您必须使您的mod
目录可供Python解释器使用。如果您使用的是MacOSX,请执行以下操作:
cd path_to_main_mod_directory
ln -s /Library/Python/2.7/site-packages/mod mod
那么它会起作用:
python mod/mod2/altceva.py
cd mod && python mod2/altceva.py
答案 1 :(得分:0)
您需要将mod添加到python解释器使用的PATH中。 如您所知,您可以通过脚本本身完成自己的小文件结构。
<强> altceva.py 强>
import sys
import os
#Absolute path of mod2 directory
#__file__ is the location of this script
mod2_dir = os.path.dirname(os.path.realname(__file__))
#Absolute path of mod directory
mod_dir = os.path.dirname(mod2_dir)
#Add mod to PATH
sys.path.append(mod_dir)
from mod1.ceva import foo
这可以让你从mod目录导入任何东西,你也不需要把mod。在导入开始时。