问题标签 [relative-import]

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 投票
10 回答
139410 浏览

python - 使用 Python 3 从另一个目录中的模块导入本地函数,并在 Jupyter Notebook 中进行相对导入

我有一个类似于以下的目录结构

在工作时,notebook.jpynb如果我尝试使用相对导入来访问以下function()函数module.py

我收到以下错误:

有没有办法使用相对进口来让它工作?

请注意,笔记本服务器是在meta_project目录级别实例化的,因此它应该可以访问这些文件中的信息。

另请注意,至少按照最初的预期project1,它没有被认为是一个模块,因此没有__init__.py文件,它只是作为一个文件系统目录。如果问题的解决方案需要将其视为一个模块并包含一个__init__.py文件(甚至是空白文件),那很好,但这样做不足以解决问题。

我在机器之间共享这个目录,相对导入允许我在任何地方使用相同的代码,并且我经常使用笔记本进行快速原型设计,因此涉及将绝对路径组合在一起的建议不太可能有帮助。


编辑:这与Python 3 中的相对导入不同,后者通常讨论 Python 3 中的相对导入,尤其是从包目录中运行脚本。这与在 jupyter notebook 中工作有关,试图在另一个目录中调用本地模块中的函数,该目录具有不同的一般和特定方面。

0 投票
1 回答
3515 浏览

python - py2exe 的相对导入错误

我试图为一个简单的 Python 脚本生成一个可执行文件。我的 setup.py 代码如下所示:

但是,我收到了屏幕截图中显示的错误。有什么我可以尝试解决的吗?我正在使用 Windows 10。

在此处输入图像描述

0 投票
1 回答
1442 浏览

python - Python 项目结构和相关导入

我是 Python 的新手,我搜索了很多谷歌并阅读了一些关于相对导入等的文章。尽管我无法让它工作。请考虑我的以下项目结构:

而我想要实现的是从a.py脚本内部的文件中导入一个类b.py。一般来说,脚本b.py应该与导入的a.py. 我读过一些关于使用__init__.py文件的文章,我应该把它们放在哪里?我应该PYTHONPATH以某种方式改变,如何?最后一个问题,项目结构好吗?感谢您的时间和帮助!

0 投票
1 回答
86 浏览

python - 如何在不执行 python -m 的情况下使用相对导入?

我有一个这样的文件夹

我想使用亲戚进口test1test2喜欢这样

当我开发test1或者test2我希望这些导入在我处于空闲状态时工作,也就是说,如果我F5在工作时按下test2每个工作都很好,因为例如我不想这样做python -m test_mod.sub_mod.test2

我已经检查了这个 python-relative-imports-for-the-billionth-time

看着那个,我试过这个:

但这没有用,它给出了这个错误:

0 投票
2 回答
45 浏览

python - 脚本的绝对和相对导入

我知道这个问题经常被问到,但我有一个关于导入的非常具体的问题。我有一个文件结构如下:

基本上,这里发生的是我的程序 ( main.py) 创建了几个较小的脚本 (in temp/),然后尝试运行它们。但是,这些脚本中的每一个都引用lib/instructions.pydevice/android.py. 此代码运行这些文件:

__init__.py在每个目录中都有文件,但是因为这些文件是脚本,所以我不能使用相对导入。我将如何导入这些库?

0 投票
0 回答
248 浏览

python - 在单独的脚本中导入 python 模块

类似的问题已经问过很多次了,但我还没有找到解决方案。我有 Python 项目,其结构如下(简化版)。问题
是导入module1. myscript.py到目前为止,我已经在 .topsys.path.append(os.path.join(os.path.dirname(sys.argv[0]), '..'))上进行了编写myscript.py,但这不是很优雅,我想知道我的项目的最佳结构是什么,可以轻松地将模块从项目导入到位于单独文件夹中的脚本中。

0 投票
1 回答
51 浏览

python - 从父目录导入测试子目录而不使用打包,Python 2.7

TL;博士

对于像这样的固定且不可更改的非包目录结构:

test_mod.py什么是启用从导入的非打包方式mod.py

在这种情况下,我仅限于使用 Python 2.7。

我想为mod.py. 我想创建一个新目录test,在它旁边mod.py和里面有一个测试文件test/test_mod.py,应该从中导入函数mod.py并测试它们。

由于依赖于基于包的命名的相对导入的众所周知的限制,您不能以直接的方式执行此操作。然而,关于该主题的所有建议都建议将脚本构建为一个包,然后使用相对导入,这对于我的用例来说是不可能的。

就我而言,它不允许mod.py作为一个包构建,我不能要求用户mod.py安装它。相反,他们可以自由地从版本控制中检出文件,然后按照他们的意愿开始使用它,我无法改变这种情况。

鉴于此,有什么方法可以提供简单、直接的test 目录

注意:不仅仅是一个测试文件mod.py,而是一个实际的测试目录,因为它会附带测试数据等其他资产,并且子目录组织至关重要。

如果这是重复的,我深表歉意,但是在发布之前我在研究中看到的这个问题的十几个排列中,我还没有看到一个解决如何做到这一点的问题。他们都说要使用包装,这对我来说是不允许的选择。

0 投票
1 回答
49855 浏览

python - Python 相对导入脚本向上两级

在过去的一个小时里,我一直在为我的包裹中的导入而苦苦挣扎。

我有一个像这样的目录结构:

我想访问中的代码script_b.py以及来自的script_c.py代码script_a.py。我怎样才能做到这一点?

import script_b如果我在里面放一个简单的script_a.py,当我跑的时候

我遇到了一个

对于访问script_c.py,我不知道。我无法找到有关访问上两级文件的任何信息,但我知道我可以导入上一级文件

我怎样才能访问这两个文件script_a.py

0 投票
1 回答
249 浏览

python - Python 相对/绝对导入(再次)

这个话题已经被讨论过好几次了,但我仍然无法让我的包工作。情况如下:我有一个包,其中一个logging模块负责设置日志记录。很明显,与标准库中mypackage.logging的 Python 冲突。logging

目录结构:

我的包.__init__

mypackage.logging

脚本.py

最后,这是我收到的错误消息:

最后的话,我注意到如果在标准库之前mypackage.__init.py__导入,它可以工作。我不想这样做,因为它违反了 Python PEP8 建议:mypackage.logginglogging

进口应按以下顺序分组:

  1. 标准库导入
  2. 相关第三方进口
  3. 本地应用程序/库特定导入

任何帮助将不胜感激。

本。

PS我正在使用Python 3.5.1。

0 投票
1 回答
1263 浏览

python - 从同级目录导入 Python 类

我的目录结构/VM/repo/project是:

getSomething.py

项目.py

数据库.py

当我尝试跑步时

我得到错误

Traceback(最近一次调用最后一次):
文件“scripts/getSomething.py”,第 4 行,在 <module>
from ..classes import project
ValueError: Attempted relative import in non-package

我在这里想念什么?