【问题标题】:How can one Python module break another?一个 Python 模块如何破坏另一个?
【发布时间】:2013-06-19 01:05:12
【问题描述】:

经过几个小时的调试和反复试验,我发现导入两个独立的 Python 模块会导致其中一个函数停止工作。

import arcpy
# works
sde_conn = arcpy.ArcSDESQLExecute(r"C:\temp\test.sde")

然而:

import arcpy
import rtree
# fails
sde_conn = arcpy.ArcSDESQLExecute(r"C:\temp\test.sde")

这两个 Python 模块是 rtree 和 ESRI 的 arcpy,这两个模块我都在 Windows 上运行(在 Windows 7 和 Windows Server 2008 R2 以及 32 位和 64 位 Python 安装上都会出现此问题)。

logged the issue,但我想知道一个模块破坏另一个模块的功能的可能原因是什么?

我快速检查了全局变量,并修改了系统路径。两者都依赖于 DLL。

还有哪些其他因素可能造成影响?

【问题讨论】:

  • 当您执行from rtree import *from arcpy import * 并且存在冲突的函数名称时会发生这种情况
  • Python 作为一种动态语言,模块可能会以多种方式表现不佳并破坏其他内容。猴子补丁内置或标准模块是破坏其他模块的好选择。

标签: python python-import python-module


【解决方案1】:

使用时会发生:

from (module) import * 

如果两个模块都有同名的函数。 无耻地取自@karthikr

【讨论】:

  • 这绝对是首先要检查的,但在这种情况下,我有两个简单的导入
猜你喜欢
  • 2013-12-21
  • 2019-09-04
  • 2022-01-08
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 2020-06-22
  • 2011-10-30
  • 1970-01-01
相关资源
最近更新 更多