【发布时间】:2016-05-03 05:38:00
【问题描述】:
假设我有一个具有以下结构的项目
projectfoo/
|- mymodule/
|--|- __init__.py
|--|- library.py
|- preprocessor.py
在__init__.py 中mymodule 看起来像这样
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,但我仍然遇到同样的错误
【问题讨论】:
-
修改 PYTHONPATH 环境变量可能会有所帮助。 docs.python.org/2/tutorial/modules.html#the-module-search-path
标签: python python-3.x python-import