Python中文
首页
教程
问答
标签
搜索
登录
注册
从outsid调用Python包时无法导入相邻子包
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我创建了一个简单的包来说明这个问题。以下是文件结构:</p> <pre><code>pypkg ├── __init__.py ├── __main__.py ├── sub_a │ └── __init__.py └── sub_b └── __init__.py </code></pre> <p><code>sub_a</code>有一个函数<code>foo</code>:</p> ^{pr2}$ <p><code>sub_b</code>有一个函数<code>foobar</code>,它调用<code>foo</code>:</p> <pre><code># sub_b/__init__.py from sub_a import foo def foobar(): foo() print 'bar' </code></pre> <p>在主文件中,我导入<code>foobar</code>,没有问题:</p> <pre><code># __main__.py from sub_b import foobar if __name__ == '__main__': foobar() </code></pre> <p>如果我用<code>python pypkg</code>运行这个包,它可以正常工作。当我试图从外部使用<code>foobar</code>时,问题就开始了。我在路径中添加了<code>pypkg</code>,但是当我试图导入<code>foobar</code>时,它引发了一个<code>ImportError</code>异常。下面是一个演示:</p> <pre><code>In [1]: from pypkg.sub_b import foobar --------------------------------------------------------------------------- ImportError Traceback (most recent call last) <ipython-input-1-37682ecaec63> in <module>() ----> 1 from pypkg.sub_b import foobar [...]/pypkg/sub_b/__init__.py in <module>() ----> 1 from sub_a import foo 2 3 def foobar(): 4 foo() 5 print 'bar' ImportError: No module named sub_a </code></pre> <p>发生<code>ImportError</code>并不是因为它找不到<code>sub_b</code>,而是因为包无法导入自己的“邻居子包”。这就引出了一个问题:如何从外部正确导入<code>foobar</code>?在</p> <p>我对这个话题做了广泛的研究,绝大多数问题都是关于那些没有放置<code>__init__.py</code>文件的人,注意到这不是这里的问题。在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>python根据您的工作路径计算路径。在</p> <p>所以你可以选择使用固定工作路径的绝对模块路径还是可变工作路径的相对模块路径。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在Excel中读取公式并将其转换为Python中的计算?
2 回答
如何在excel中读取嵌入的excel,并将嵌入文件中的信息存储在主excel文件中?
9 回答
如何在Excel中返回未知列长度的非空顶行列值?
6 回答
如何在excel中选择数据列?
2 回答
如何在Excel中通过脚本自动为一列中的所有单元格创建公共别名
2 回答
如何在excel中高效格式化范围AttributeError:“tuple”对象没有属性“fill”
6 回答
如何在excel单元格中编写python函数
7 回答
如何在excel单元格中自动执行此python代码?
10 回答
如何在excel工作表中创建具有相应值的新列
9 回答
如何在Excel工作表中复制条件为单元格颜色的python数据框?
10 回答
如何在Excel工作表中循环
4 回答
如何在excel工作表中打印嵌套词典?
10 回答
如何在excel工作表中绘制所有类的继承树?
7 回答
如何在Excel工作表中自动调整列宽?
3 回答
如何在excel工作表中追加并进一步处理
2 回答
如何在excel工作表之间进行更改?
1 回答
如何在excel或csv上获取selenium数据?
7 回答
如何在Excel或Python中将正确的值赋给正确的列
3 回答
如何在excel或python中提取单词周围的文本?
2 回答
如何在excel或python中转换来自Jira的3w 1d 4h的fromat数据?
3 回答