gpt4 book ai didi

python - 从 python 包导入时出现问题(本地与 python 路径上)

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:42 26 4
gpt4 key购买 nike

我无法在 Python2.7 中同时运行以下功能:

  • 从本地包导入子模块

  • 当包位于 PYTHONPATH 上时,从包中导入子模块

我已经设置了示例目录结构,如 python docs for packages 所示。

 cd tmp
mkdir sound
mkdir sound/formats
mkdir sound/effects
mkdir sound/filters
cd sound
touch __init__.py
cp !$ formats/
cp __init__.py formats/
cp __init__.py effects/
cp __init__.py filters/
echo "def echofilter(): return(1) " > effects/echo.py
cd ../..

所以,我最终得到:

$ ls tmp/sound
effects/ filters/ formats/ __init__.py

如果我将包设置为本地包,就像它充当 git 子模块一样,例如,通过 cd tmp ,如下成功:

$ 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/),而不是包本身的文件夹(~/tmp/sound)。因此,可以进行以下工作:

>>> import sys
>>> sys.path.append('/home/meuser/tmp/')
>>> from sound.effects import echo

现在我相信这解决了我最近遇到的所有难题..

关于python - 从 python 包导入时出现问题(本地与 python 路径上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35800110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com