回答
另一种选择,如果你正在写的一个包的一部分,是使用相对进口像这样:
from .. import foo
其中foo
是您要导入的模块的名称。
同样,如果你有在当前目录中的另一个模块,您可以使用:
from . import bar
可悲的是(或许不那么伤心),但是,这并不比任何进一步的扩展这个。你不能去祖父母或更高。
编辑:
至于如此慷慨指出的JAB,我最后的评论还没有真正:
从... SYS导入路径
注意的是,虽然去年案件是合法的,它肯定是不受欢迎的(“疯狂”是Guido使用的词)。
我必须内化Guido对它的描述太多。 ; ^)
编辑:
好吧,我只是证实了这一在2.7 - 这显然是去深如你喜欢,是依赖于.
from .... import greatgrandparent
作品juuuust数精细。我想我需要a bucket
“你不能去祖父母,或更高。” PEP 328似乎暗示你可以。 HTTP://www.python。org/dev/peps/pep-0328 /#guido-s-decision – JAB
我刚刚证实你可以(在Python 3中,至少;它不应该与Python 2有所不同,因为这个相对的import语法已经实现在第一个版本中)。 – JAB
“我一定已经内化了Guido对它的描述太多了; ^)”Guido的描述不是指使用相对导入语法从标准Python模块导入项目吗? (我的意思是,当相对导入从内置的Python模块中获取某些内容时,它会变得非常愚蠢,因为它更合理,而且更合乎逻辑,只需对这些模块进行绝对导入)。 – JAB
根据项目的组织方式,您可能可以正常导入它。比方说你的项目结构是这样的:
from mymodule import helper
:
/tmp/test_prj/launcher.py
/tmp/test_prj/mymodule/__init__.py
/tmp/test_prj/mymodule/helper.py
/tmp/test_prj/mymodule/mysubmodule/__init__.py
如果(在这种情况下launcher.py
)使用一个发射器和总是调用与./launcher.py
您的项目,您使用以下行可能进口helper.py
内mysubmodule
这是可行的,因为你当前的工作目录是/tmp/test_prj
。你可以用print sys.path
来检查它,它应该是第一个。
让我知道如果我不够清楚:D
- 1. 从当前目录的父目录的另一个子目录导入另一个模块(python)
- 2. 从另一个目录导入Python模块
- 3. 如何导入一个python文件的父目录
- 4. 从Python子目录导入
- 5. 如何从父目录导入模块? (单元测试目的)
- 6. 从父目录导入文件
- 7. 从父目录导入脚本
- 8. 从父目录进行相对导入
- 9. 从另一个目录导入Python包到Django项目
- 10. 一次从一个目录导入所有模块[NODE]
- 11. flash导入类从另一个目录
- 12. 从目录动态导入一个包
- 13. 无法从django应用程序父目录中的子目录导入模块
- 14. 当父目录已经拥有该库的旧版本时,Python从另一个目录导入更新的库
- 15. 导入类从另一个目录 - Python的
- 16. python父目录
- 17. 从Python中的子目录导入
- 18. 从较高目录导入在Python
- 19. 从兄弟目录导入Python类
- 20. 如何从父目录中导入一类在ActionScript 3
- 21. 从Python模块导入父目录内到jupyter笔记本电脑内的文件子目录
- 22. 在Python从“子子目录”导入模块3
- 23. 从目录中导入用户定义的模块在Python中
- 24. 从不同的工作目录导入Python模块
- 25. 如何导入模块中的上一级目录在python
- 26. QT CreatorL从另一个(父)目录
- 27. 在Python中,如何从__init__.py中导入在同一目录
- 28. 无法在父目录中导入模块
- 29. 2 django项目,从一个模型导入到另一个
- 30. 如何将C++ python扩展导入到另一个目录中的模块中?
这就是文件系统的工作原理。 –