从python包导入时出现问题(python路径上的本地vs)
我无法在Python2.7中同时实现以下功能:从python包导入时出现问题(python路径上的本地vs),python,python-import,Python,Python Import,我无法在Python2.7中同时实现以下功能: 从本地包导入子模块 当包位于PYTHONPATH上时,从包中导入子模块 我已经设置了示例目录结构,如 因此,我最终得出以下结论: $ ls tmp/sound effects/ filters/ formats/ __init__.py 如果我将包设置为本地,就像它作为git子模块一样,例如,通过cdtmp,则以下操作是成功的: $ python Python 2.7.10 (default, Oct 14 2015, 16:09:02
- 从本地包导入子模块
- 当包位于PYTHONPATH上时,从包中导入子模块
$ ls tmp/sound
effects/ filters/ formats/ __init__.py
如果我将包设置为本地,就像它作为git子模块一样,例如,通过cdtmp
,则以下操作是成功的:
$ python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
>>> from sound.effects import echo
>>>
但是,如果我位于其他地方(cd..
),并且我将包放在我的PYTHONPATH上,我就不能像文档中那样导入:
[~/tmp]$ cd ..
[~]$ python
Python 2.7.10 (default, Oct 14 2015, 16:09:02)
[GCC 5.2.1 20151010] on linux2
>>> import sys
>>> sys.path.append('/home/meuser/tmp/sound')
>>> from sound.effects import echo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sound.effects
>>> sys.path.append('/home/meuser/tmp/sound/effects')
>>> from sound.effects import echo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sound.effects
[~/tmp]$cd。。
[~]$python
Python 2.7.10(默认值,2015年10月14日,16:09:02)
[GCC 5.2.1 20151010]关于linux2
>>>导入系统
>>>sys.path.append(“/home/meuser/tmp/sound”)
>>>从sound.effects导入回声
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为sound.effects的模块
>>>sys.path.append(“/home/meuser/tmp/sound/effects”)
>>>从sound.effects导入回声
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为sound.effects的模块
那我该怎么安排呢?啊!如果是包,我需要路径中包含包的文件夹(即~/tmp/),而不是包本身的文件夹(~/tmp/sound)。因此,以下工作:
>>> import sys
>>> sys.path.append('/home/meuser/tmp/')
>>> from sound.effects import echo
现在我相信这解决了我最近遇到的所有难题。让我直截了当地说:你想从机器上的任何地方导入你制作的软件包吗?是的。我有一些软件包,我维护并用于很多项目。我将它们的位置放在我的PYTHONPATH中(这不是它的用途吗?),设置在我的bash配置中。事实上,多年来我就是这样做的,但我从来没有用点来指定子模块(sound.effects)。相反,我只是在sound/下有一堆相同级别的文件(模块),我将从中显式导入。
>>> import sys
>>> sys.path.append('/home/meuser/tmp/')
>>> from sound.effects import echo