我已经做过研究,但找不到明确的解决方案... 如果我有同名的包裹,如何导入第三者包裹?
示例:
项目树如下所示:
├── 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-python
(https://segment.com/docs/sources/server/python/)
并运行python main.py
,它将 local analytics 再次写入输出。
如何从第三方程序包运行代码?
答案 0 :(得分:1)
这里的意思是您正在将__init__.py
作为脚本运行。运行脚本时,Python将包含脚本的目录添加到sys.path
的开头,这会全局影响所有后续导入。
因此,要使用第三方模块,您必须重命名本地分析目录或删除__init__.py
文件,以便python不在sys.path
中列出该文件。