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

2024-10-01 17:29:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

^{pr2}$

并且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'

我做得对吗?我在安装程序中使用的是运行在ubuntu14.04中的python3.4。在

编辑:我也尝试过将__init__.py添加到projectfoo中,但是仍然得到相同的错误


Tags: 项目代码pyimportindexinitmaindef
3条回答

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

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

仅供参考:操作系统路径将返回绝对路径。但是系统路径将返回路径env。系统设置中的变量。在

希望有帮助。在

您必须在projectfoo/文件夹中添加一个__init__.py文件(可以是空的),使其成为有效的模块。在

然后使用相对导入显式指定您请求当前模块的子模块mymodule,如下所示:

from .projectfoo import preprocessor

.表示包含import语句的文件所在的当前模块。它的父模块将表示为..,它的“祖父母”将是...

尝试将空的__init__.py添加到projectfoo文件夹中。在

相关问题 更多 >

    热门问题