我有一个名为dataviz
的模块,我使用python setup.py develop
安装它,它位于:
In [4]: dataviz.__file__
Out[4]: '/home/obot/gscripts/gscripts/general/dataviz.py'
但是我在这个文件中得到了一个错误:/nas3/yeolab/Software/Python-2.7.5/lib/python2.7/site-packages/gscripts-0.1.4-py2.7.egg/gscripts/general/dataviz.pyc
,在heatmap
函数中,在这一行:
--> 321 heatmap_ax.yaxis.set_ticks_position('center')
但是当我做dataviz.heatmap??
时,它指向/home/obot/gscripts/gscripts/general/dataviz.py
,对应的行是:
heatmap_ax.yaxis.set_ticks_position('left')
你知道怎么回事吗?你知道吗
编辑:
我添加了%load_ext autoreload
,它似乎已经修复了一些问题并正确地重新加载了。另外,这个模块没有dreload
正常运行,它崩溃了,然后我必须重新启动我的内核,这完全是运行dreload
的第一点,这样我就可以保持我所有的变量=\
所以这似乎解决了问题。。现在。你知道吗
就进口而言,
setup.py develop
没有什么特别之处。它所做的只是将源位置添加到sys.path
,而不是将文件复制到site-packages
。你知道吗您看到的不一致是由于如何显示回溯造成的。Python在导入时不会将整个文件内容存储在内存中。但是,它所存储的代码的编译版本包括对文件名和行号的引用。Python使用这些信息来构造诸如回溯之类的东西,IPython也使用这些信息进行检查,例如
object??
输出。你知道吗从文件
foo.py
开始:我们可以将其导入IPython:
通过定位文件并从编译对象中读取行号信息来构造回溯:
如果我们更改磁盘上的文件,它不会更改内存中的行号引用,因为模块尚未重新加载。 例如,让我们添加一个docstring:
现在我们可以再次进行相同的调用,但是回溯将找到异常所在的行,而不是新文件中的行:
但如果重新加载文件,内存中的表示形式将与文件恢复同步:
我看到你已经找到了
dreload
和%autoreload
。我忍不住要说“it crasks”,但通常一个简单的显式reload
比dreload简单得多,也更可靠,尤其是在处理单个文件时。但你可以尝试这种稍微保守一点的方法:它只会自动重新加载您显式要求它使用
%aimport
加载的模块。你知道吗相关问题 更多 >
编程相关推荐