Python 导入错误:无法导入名称';邮件解析器';从';lib';
我下载了一个其他人正在使用的存储库。此文件适用于除我之外的所有其他人,因此我认为我的本地设置存在问题 lib import mailparser中有一行导致错误的代码:Python 导入错误:无法导入名称';邮件解析器';从';lib';,python,Python,我下载了一个其他人正在使用的存储库。此文件适用于除我之外的所有其他人,因此我认为我的本地设置存在问题 lib import mailparser中有一行导致错误的代码: Traceback (most recent call last): File "parse.py", line 3, in <module> from lib import mailparser ImportError: cannot import name 'mailparser' from 'lib
Traceback (most recent call last):
File "parse.py", line 3, in <module>
from lib import mailparser
ImportError: cannot import name 'mailparser' from 'lib' (/usr/local/lib/python3.7/site-packages/lib/__init__.py)
回溯(最近一次呼叫最后一次):
文件“parse.py”,第3行,在
从库导入邮件解析器
ImportError:无法从“lib”导入名称“mailparser”(/usr/local/lib/python3.7/site packages/lib/_init__;.py)
“lib”目录中100%有一个名为“mailparser”的文件,但它无法识别它
从错误的角度看,它似乎是在
usr/local/lib/python3.7/site packages/lib
中查找的,这肯定是错误的,因为正确的路径是/Users/myname/Documents/Company Name/parser/lib/mailparser.py
如果您将lib
包下载到了这个位置,那么您需要这样做
sys.path.insert(0, "<PATH-TO-PACKAGE>")
sys.path.insert(0,”)
在文件的顶部,让Python在其中查找它
这里的问题是,您的站点包
文件夹中已经存在一个名为lib
的包,Python在该文件夹中查找要导入的文件。对于您的同事来说,他们什么都没有,因此Python返回到当前工作目录中查找名为lib
的内容。在您的例子中,它会找到这个随机lib
,并使用它。为了避免这种情况,您告诉Python首先查看当前的工作目录,方法是将它插入到sys.path
的第一个位置
如果您下载的存储库有一个
setup.py
文件,您可能需要进入repo并运行pip install.
从源代码安装。这将把代码安装到您的站点包中
但其他人不必这样做。我敢肯定这是我的设置有问题。如果你下载了repo,它是python包吗?您可能需要进入它并运行pip安装。
因此它会从setup.py
安装到您的站点包中。
不,它是由我们编写的。当问题似乎是您的站点包中已经有一个名为lib
的包时,与您的同事不同的是,因此Python在当前的工作树中查找名为lib
的内容并找到了它,但在您的例子中,它首先查找站点包,看到lib并认为这就是您的意思。pip卸载lib
或执行sys.path
技巧。