Python 3.6,以相同的名称导入本地vs 3rd Party软件包

时间:2019-09-02 11:53:15

标签: python-3.x python-import segment-io

我已经做过研究,但找不到明确的解决方案... 如果我有同名的包裹,如何导入第三者包裹?

示例:

项目树如下所示:

├── Pipfile
├── Pipfile.lock
├── analytics
│   ├── __init__.py
│   └── client.py
└── main.py

analytics / client.py 的内容很简单:

def identify():
    print("local analytics")

analytics / init.py 是单行代码:

from .client import  identify

main.py

import analytics


analytics.identify();

如果我运行python main.py,它将在输出中写入 local analytics 。没关系。

但是,如果我安装名称为 analytics 的第三方软件包,例如

pipenv install analytics-pythonhttps://segment.com/docs/sources/server/python/

并运行python main.py,它将 local analytics 再次写入输出。

如何从第三方程序包运行代码?

1 个答案:

答案 0 :(得分:1)

这里的意思是您正在将__init__.py作为脚本运行。运行脚本时,Python将包含脚本的目录添加到sys.path的开头,这会全局影响所有后续导入。

因此,要使用第三方模块,您必须重命名本地分析目录或删除__init__.py文件,以便python不在sys.path中列出该文件。

相关问题