问题标签 [pep328]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
359 浏览

python - 如何在包内导入模块

文件夹结构:

foo/__init__.pyimport bar

我正在test.py跑步import foo


我如何__init__.py导入bar.py

为什么 Python 不为我的包创建新范围并为导入目录创建根foo目录?

相对路径似乎也不起作用(我收到了SyntaxError),尽管我正在寻找一种允许绝对路径的解决方案。


两个不可接受的答案:

  • 我不能用import foo.bar。我需要这个foo包有自己独立的层/范围,这样我就可以在我的计算机中的任何地方移动它并从任何地方导入它。这意味着根可能会改变并且import foo.bar不会总是有效。

  • 我无法将foo文件夹添加到我的路径中。显然,这会使路径变得混乱,并且很容易发生名称冲突。开始的感觉会说这个包的文件应该与使用它的路径分开。


也许有一个解决方案可以将此包的目录添加到仅针对该包范围的路径中,在__init__.py?