zil*_*n01 8 python python-import
我正在寻找一种方法来模拟Python导入的符号链接.我希望能够在不复制文件的情况下就地解压缩以下文件夹结构:
root
?? python_lib
? ?? my_utils
? ?? __init__.py
? ?? etc.py
?? app1
?? app2
?? app3
?? lib
? ?? __init__.py
? ?? my_utils.py
?? run.py
Run Code Online (Sandbox Code Playgroud)
app3/run.py 包含这个:
from lib.my_utils import etc
etc.pancakes()
Run Code Online (Sandbox Code Playgroud)
我想要使用etc位于的代码python_lib/my_utils/.有什么我可以放入,app3/lib/my_utils.py以便Python> = 3.1将透明地导入python_lib/my_utils/文件夹(使用相对路径和..),子包也将工作?
您必须在到达import语句之前执行某些操作app3/run.py.
import python_lib
import sys
sys.modules['lib'] = python_lib
# ...
from lib import etc
print etc.__file__
print dir(etc)
Run Code Online (Sandbox Code Playgroud)
您应该将此路径添加到sys.path. 例如:
lib_path = os.path.abspath( os.path.split( os.getcwd()+"/"+sys.argv[0] )[0]+"/../_lib/my_utils/" )
sys.path.append(lib_path)
Run Code Online (Sandbox Code Playgroud)