从子目录下或任何位置的Python导入模块/函数

时间:2019-03-08 05:39:33

标签: python function module

我想以工作目录作为项目主目录加载功能/模块,但是功能文件存储在子目录级别以下,因此是正常的

function copyToInput(elementId) { var getText = document.getElementById(elementId).innerText; var chatHudInput = document.getElementsByClassName('hud-chat-input')[0]; chatHudInput.value = getText; }

不起作用。

这是项目目录设置的样子:

    <div class="hud-chat-message" id="message" onclick="copyToInput('message');"> SOME TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message2" onclick="copyToInput('message2');"> SOME MORE TEXT HERE </div>
<hr>
<div class="hud-chat-message" id="message1" onclick="copyToInput('message1');"> EVEN MORE TEXT HERE </div>
<hr>
<input type="text" name="message" class="hud-chat-input" placeholder="Enter your chat message..." maxlength="140">

所以我试图通过导入功能

from function_file import function_name

那是行不通的。我知道这是因为其他子目录不是模块,但是我想问一下周围是否还有其他地方吗?

-编辑 我正在使用code / scripts / script1.py中的.py文件工作,但工作目录为project_main_directory /

4 个答案:

答案 0 :(得分:1)

每个子目录添加一个空文件__init__.py,使其成为模块。

.
├── code
│   ├── __init__.py
│   └── scripts
│       ├── __init__.py
│       └── script1.py
└── main.py

然后,如果您在hello中有一个名为code/scripts/script1.py的函数,则可以通过以下方式导入该函数:

from code.scripts.script1 import hello
hello("yo")

答案 1 :(得分:0)

如果当前目录为project_main_directory,则可以使用:

from code.scripts.functions.function1 import function1

脚本目录无关紧要。仅您当前的目录很重要(请参阅IDE的顶部)

答案 2 :(得分:0)

要从另一个python文件导入函数/模块,您必须执行以下操作-

from code.scripts.functions.function1 import function1

上面我们是从 function1.py 文件中加载 function1 ,该文件存储在 functions 目录中,该目录存储在 scripts 目录,最后在 code 目录中。

编辑-就是说,您要从script1.py中的function1.py加载函数吗?在这种情况下,from .functions.function1 import function应该可以工作。

答案 3 :(得分:0)

首先,从Python 3.3开始,不再需要__init__.py来将目录定义为可导入的Python包。其次,您可以使用相对导入,这将在您需要进行重构时为您提供帮助:

from code.scripts.script1 import function_name

我记得我前一段时间也遇到同样的错误,请查看this question及其答案以获取更多信息,因此希望可以解决您的问题。