Skip to main content
 首页 » 编程设计

python之在python中将另一个项目作为模块导入

2025年05月04日16birdshome

假设我有一个结构如下的项目

projectfoo/ 
|- mymodule/ 
|--|- __init__.py 
|--|- library.py 
|- preprocessor.py 

mymodule 中的 __init__.py 看起来像这样

from . import library #library itself has other functions 
 
def some_function(): 
    blar blar blar... 

preprocessor.py 如下所示

import mymodule 
 
def main(): 
    something() 
 
def something(): 
    mymodule.some_function() # calls the function defined in __init__.py 
 
if __name__ == '__main__': 
    main() 

然后我启动了 projectbar,它使用了很多来自 projectfoo 的通用代码。因此,我希望将 projectfoo 导入项目栏,而不是在项目之间复制和粘贴代码,如下所示。

projectbar/ 
|- projectfoo/ 
|--|- mymodule/ 
|--|--|- __init__.py 
|--|--|- library.py 
|--|- preprocessor.py 
|- index.py 

所以我尝试在我的 index.py 中导入 preprocessor,如下所示

from projectfoo import preprocessor 

但是我收到一条错误消息,提示 preprocessor.py 现在无法导入 mymodule。

ImportError: No module named 'mymodule' 

我这样做正确吗?我在我的设置中使用在 ubuntu 14.04 中运行的 python3.4。

编辑:我也尝试将 __init__.py 添加到 projectfoo,但我仍然遇到同样的错误

请您参考如下方法:

您收到此错误是因为您没有将预处理器 的路径添加为库包

from sys import path as pylib #im naming it as pylib so that we won't get confused between os.path and sys.path  
import os 
pylib += [os.path.abspath(r'/projectfoo')] 
from projectfoo import preprocessor 

仅供引用:os.path 将返回绝对路径。但 sys.path 将返回路径环境。系统设置中的变量。

希望对您有所帮助。