【问题标题】:Finding the source code for a Python module查找 Python 模块的源代码
【发布时间】:2015-04-23 08:39:58
【问题描述】:

我使用 PyCharm 作为我的编辑器,似乎它与 certain sub-modulesnumpy.random.normal 的表现不佳。为了不灰心,我追踪了numpy.random 的住所/usr/lib/python2.7/dist-packages/numpy/random

我看不到任何正常情况。 __init__.py 中有它的定义,但没有实际代码可供我复制到我的项目的新类中。

我是不是在错误的地方寻找代码?

【问题讨论】:

  • 为什么要看源码?你有什么问题?这些功能在 C 中实现,参见例如github.com/numpy/numpy/blob/master/numpy/random/mtrand/…
  • 每当我尝试使用 noise = numpy.random.normal(0, power_noise, len(self.data)) 将其导入 PyCharm 时,它都会告诉我找不到参考。但是,如果我打开一个终端,我可以根据需要使用正常功能。
  • 这看起来像一个 PyCharm 错误(事实上,他们的 bugtracker 列出了几个这样的错误)。这是一款商业产品,因此请将您的问题提交给软件开发人员。

标签: python numpy pycharm


【解决方案1】:

您可以通过这样做找到一个包的位置:

import numpy.random
print numpy.random.__file__

在您的情况下,模块的主要部分似乎是用 C 实现的。您可以在目录中看到,其中有一个文件“mtrand.so”。这是一个从 C 源代码创建的共享对象,通常不随运行时包一起提供。当您导入模块/包时,Python 系统可以在运行时加载此类共享对象。

【讨论】:

  • 所以即使它在我运行它之前给了我一个警告,但每当我运行实际程序时它应该按预期运行?
  • 你能给出完整的错误信息吗?我不熟悉 PyCharm。难道是系统有不同的PYTHONPATH?是不是用同一个Python版本???
  • normal 最终在我的系统上的 mtrand.so 中实现。我不知道,你的 PyCharm 系统是怎么回事——它一定与 PyCharm 或 PyCharm 正在访问不同版本的 Python。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 2012-08-14
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多