我有两个 python 模块,我正在尝试import使用sys.path.append和sys.path.insert。以下是我的代码
import sys
sys.path.insert(1, "/home/sam/pythonModules/module1")
sys.path.append("/home/sam/pythonModules/module2")
from lib.module1 import A
from lib.module2 import B
Run Code Online (Sandbox Code Playgroud)
我有以下文件夹结构
/home/sam/pythonModules/module1/lib/module1.py
/home/sam/pythonModules/module2/lib/module2.py
Run Code Online (Sandbox Code Playgroud)
我可以导入 lib.module1 但不能导入 lib.module2。如果我这样做
import sys
sys.path.insert(1, "/home/sam/pythonModules/module2")
sys.path.append("/home/sam/pythonModules/module1")
from lib.module1 import A
from lib.module2 import B
Run Code Online (Sandbox Code Playgroud)
那么我可以import module2但不能module1。
出现上述导入错误的原因可能是什么?
我尝试append而不是insert按照以下方式,但它仍然不起作用
import sys
sys.path.append("/home/sam/pythonModules/module1")
sys.path.append("/home/sam/pythonModules/module2")
from lib.module1 import A
from lib.module2 import B
Run Code Online (Sandbox Code Playgroud)
始终仅sys.path.append成功导入第一个模块。
sys.path.append但我通过以下方式对路径进行了一些更改,然后它就起作用了。两个模块均已成功导入
import sys
sys.path.append("/home/sam/pythonModules/module1")
sys.path.append("/home/sam/pythonModules/module2/lib")
from lib.module1 import A
from module2 import B
Run Code Online (Sandbox Code Playgroud)
恐怕你不能那样做。
由于结构:
/home/sam/pythonModules/module1/lib/module1.py
/home/sam/pythonModules/module2/lib/module2.py
Run Code Online (Sandbox Code Playgroud)
你不能把两者都放在:
/home/sam/pythonModules/module1和/home/sam/pythonModules/module2 并sys.path期望 Python 会找到:
module1在module1/lib和module2在module2/lib 当您尝试导入时:
from lib.module1 import A
from lib.module2 import B
Run Code Online (Sandbox Code Playgroud)
如果您将/home/sam/pythonModules/module1before放入数组/home/sam/pythonModules/module2中sys.path,则 thenimport lib.MODULE将搜索MODULEin /home/sam/pythonModules/module1/lib。
由于其中只有 onlymodule1和 no module2,因此会出现错误。
你能做的就是把两者都放在
/home/sam/pythonModules/module1/lib/和/home/sam/pythonModules/module2/lib/ 并sys.path期望 Python 通过下一行正确导入它们:
from module1 import A
from module2 import B
Run Code Online (Sandbox Code Playgroud)