python-3.x - Python 3.6,导入同名的本地 vs 3rd 方包
问题描述
我已经进行了研究,但找不到明确的解决方案...如果我有同名的包,如何导入第 3 方包?
例子:
项目树如下所示:
├── 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
主文件
import analytics
analytics.identify();
如果我运行python main.py
它会将本地分析写入输出。没关系。
但是,如果我使用名称分析安装 3rd 方包,例如
pipenv install analytics-python
( https://segment.com/docs/sources/server/python/ )
并运行python main.py
,它将再次将本地分析写入输出。
如何从 3rd 方包运行代码?
解决方案
这里的重点是您__init__.py
作为脚本运行。当您运行脚本时,Python 会将包含该脚本的目录添加到 的前面sys.path
,这会全局影响所有后续导入。
因此,为了使用第三方模块,您必须重命名本地分析目录或删除__init__.py
文件,以便 python 不会在sys.path
.
推荐阅读
- javascript - 从文件系统创建对象树
- c++ - 如何返回在我的函数中创建的数组的 unique_ptr?
- html - 如何在不使用跨度的情况下让我的所有 h2 使用相同的类?我希望我所有的 h2 都使用 .fancy_underline 类
- c# - 如何将 X(:,J) 等 Fortran 子数组语法转换为 VB.NET 和 C#
- laravel - Supervisord & Laravel - has been attempted too many times or run too long
- python - 我的代码有什么问题?添加“不”后失败。采取的步骤'到代码中
- spring-boot - 如何将 Spring log4j 与 messages.properties 集成?
- selenium - Heroku 脚本托管
- ios - 使用 iCloud PHAsset 请求 AVAsset 返回一个没有 VideoTracks 的 AVAsset
- r - Windows 10 中 R 中的 TensorFlow 安装