【问题标题】:Python Submodule Import DiscrepancyPython子模块导入差异
【发布时间】:2013-08-23 01:17:44
【问题描述】:

我正在将 numpy 包动态导入到另一个专有系统的 python 环境中。顶级numpy 包从正确的位置导入,但numpy.random 包指向标准库。为什么会这样?

代码

import sys

LIB_PATH = 'T:\\Some\\Path\\'

if LIB_PATH not in sys.path:
    sys.path.insert(0, LIB_PATH)

import numpy

print numpy
print numpy.random

输出

<module 'numpy' from 'T:\Some\Path\numpy\__init__.pyc'>
<module 'random' from 'C:\Python26x64\Lib\random.pyc'>

为什么numpy.random 指向C:\Python26x64\Lib\random.pyc。当我从 C:\Python26x64\ 的标准 python 解释器运行它时,random 确实是 numpy 包中的一个

【问题讨论】:

  • 这很奇怪,因为numpy.random 甚至没有在random.py 文件中定义。 numpy.random 应该指向一个名为__init__.py 的文件和名为random 的目录。

标签: python numpy python-2.6 python-import


【解决方案1】:

这是对我有用的解决方案。它认为这不是一个好的解决方案,因为它需要更改 numpy 包中的一行代码。尽管如此,它允许我们在专有软件中使用嵌入式 Python 解释器中的 pandasnumpy,只需将文件夹添加到 sys.path

文件已更改

T:\Some\Path\numpy\__init__.py

前行

线路:171 - import random

这一行假设random 将从T:\Some\Path\numpy\random\ 加载

后行

线路:171 - from numpy import random

这迫使它使用来自numpyrandom 包而不是标准包

我想我会留在这里,并给出一个未被接受的答案,直到有人能提出更好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多