python中的相对导入错误,在哪里可以找到python模块源代码

python中的相对导入错误,在哪里可以找到python模块源代码,python,python-import,Python,Python Import,我对python还是个新手。虽然我了解基本的数据类型、控制流等,但从顶层来看,我仍然觉得有点困难 其中一个问题是相对导入。 我有一本书中的代码,试图用python实现队列结构。当我运行代码时,我从导入中得到错误, “ValueError:尝试在非包中进行相对导入” 这里是导入行: from ..exceptions import Empty 我现在在我的工作项目文件夹中。 我的问题是如何调整这行代码,使整个代码都能正常工作? 我猜这个“例外”模块是由作者创建的,而不是内置模块,而且不知何故,作

我对python还是个新手。虽然我了解基本的数据类型、控制流等,但从顶层来看,我仍然觉得有点困难

其中一个问题是
相对导入
。 我有一本书中的代码,试图用python实现队列结构。当我运行代码时,我从导入中得到错误, “ValueError:尝试在非包中进行相对导入”

这里是导入行:

from ..exceptions import Empty
我现在在我的工作项目文件夹中。 我的问题是如何调整这行代码,使整个代码都能正常工作? 我猜这个“例外”模块是由作者创建的,而不是内置模块,而且不知何故,作者没有将该模块包含在当前文件夹中。 在哪里可以找到python内置模块源代码,以便查看

我的系统是ubuntu

谢谢。

这些是明确的相对导入。该语法意味着该行代码所在的文件正试图导入
空的
模块(我正在对此进行有根据的猜测,没有看到实际的dir结构,尽管模块具有大写前导字母是不寻常的——通常这是为类保留的)从位于其父目录中的
异常
子文件夹

有关更多信息,请参见,包括带有相对导入的特定文件夹结构示例

这本书真的应该在一个自包含的目录结构中展示代码——比如说,可以克隆的git repo——在这个目录结构中,这些包内依赖关系就可以正常工作。如果它是库存的,那么它不太可能与您的系统安装相关(当然可以设置PYTHONPATH和其他可能影响环境的方法)

模块结构是什么样子的


我还建议您研究一下,以便对Python环境进行沙箱处理。(尽管对于自定义代码,您可能还需要运行本地Pypi服务器或类似服务器,但还有其他选项-请参阅下面的@abarnert注释)。它本身对这个特定问题没有帮助,但一般来说,将项目及其各种包需求隔离开来是个好主意。

您实际上不需要运行定制的PyPI服务器;要安装自定义的
foo
,只需将cd放入
foo
目录,然后
pip安装--升级。
而不是
pip安装--升级foo
。啊。我在考虑更多的操作模式,即运行本地Pypi服务器,向
pip
调用添加
--extra index
,并在需求文件中包含自定义模块。但有趣的是,这也是一种选择。是的,这绝对是一种更灵活、更强大的解决方案,但快速脏的解决方案有时很有用,对于刚开始的人来说可能更容易。(也许我有点太担心吓跑新手远离
virtualenv
,但当一些显然应该使用它的人因为觉得它听起来太复杂而没有使用它时,这总是令人伤心的…)没错,功能/功能和进入壁垒之间总是有一条很好的界线。至于你的次要问题“在哪里可以找到Python内置模块源代码”:您可以选择或(将
default
更改为
2.7
3.3
或任何您想要的特定版本)。二进制模块的C源代码位于
模块中
,纯Python模块的Python源代码位于
库中
,大多数内置类型和函数的C源代码位于
对象中
Python
(用于
bltinmodule.C
sysmodule.C
)。