如何从Python中的父文件夹导入函数?

2023-11-25

我需要在我的 python 项目上执行函数的导入。

我知道有很多类似的问题,但是,不幸的是,我找不到适合我的解决方案,因为答案要么太具体,要么太笼统,要么它们只是丑陋的黑客(比如操作与绝对路径)。

我的文件夹结构如下所示:

PythonClient:.
│   .gitignore
│   des.py
│   des_test.py
│   des_var2.py
│   gui.py
│   index.py
│   __init__.py
│
├───diffie_hellman
│   │   diffie_hellman.py
│   │   diffie_hellman_test.py
│   │   __init__.py
│   │
│   └───__pycache__
│           diffie_hellman.cpython-35.pyc
│
├───hashes
│   │   collision.py
│   │   hash_function.py
│   │   __init__.py
│   │
│   └───__pycache__
│           hash_function.cpython-35.pyc
│           __init__.cpython-35.pyc
│
└───__pycache__
        des.cpython-35.pyc
        des_var2.cpython-35.pyc

我需要导入./hashes/hash_function.py from ./diffie_hellman/diffie_hellman.py.

The ./hashes/hash_function.py文件包含唯一名为的函数hash_function.

我尝试了很多方法来执行导入,但就是无法做到。 我总是得到

系统错误:父模块“”未加载,无法执行相对 进口

当我使用.在我的导入声明中(即from .hashes.hash_function)

或者我得到这个:

导入错误:没有名为“哈希”的模块

Every __init__.py文件为空。

这是我的尝试列表:

  1. from hashes import hash_function

  2. from hashes.hash_function import hash_function

  3. from .hashes.hash_function import hash_function

  4. from ..hashes.hash_function import hash_function

  5. import hashes

  6. import hash_function

  7. from .. import hash_function

  8. from . import hash_function

  9. from PythonClient.hashes.hash_function import hash_function


您能否帮助我解决我的问题并了解如何使用此类导入?


PS:这里找不到解决方案stackoverflow.com/questions/14132789/


我知道您已经接受了答案,但是如果您想要一个不太“永久”的解决方案(也就是说,如果您不想install您的代码),另一个选择是简单地将 PythonClient 目录的父目录添加到您的路径中。这可以永久完成(具体取决于操作系统)或临时在代码中完成:

import os
import sys

p = os.path.abspath('../..')
if p not in sys.path:
    sys.path.append(p)

from PythonClient.hashes.hash_function import hash_function

Cheers!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从Python中的父文件夹导入函数? 的相关文章

随机推荐

  • 在WebGL中将大数组传递到uniform中

    想知道是否可以将大型数组传递到 WebGL 着色器中 如下所示 array here uniform vec4 huge mydynamicarray void main iterate through the array here to
  • 写入控制台和文本文件

    我从互联网上找到了下面的代码 可以工作 但它不会将打印的控制台写入 omt txt 它只写入System out println第二个 catch 块之后的语句 如果您运行一次代码 您就会明白我的意思 我想要的就是将控制台上的内容写入 om
  • 使用 PostGIS 将点转换为多边形

    我想使用 PostGIS 创建一个多边形表 表中的每一行 point 有三分ID Table point location 有点的位置信息 我用谷歌搜索了这个问题但没有找到答案 下面的代码有什么问题 SELECT ST GeomFromTe
  • 如何在 pygame 中找到两点之间的角度?

    我正在用 Pygame 用 Python 编写一个游戏 我的显示窗口的 坐标是 0 0 在左上角和 640 480 在右下角 角度是 0 当指向上方时 90 当指向右侧时 我有一个位于中心位置的玩家精灵 我希望枪上的炮塔指向玩家 我该怎么做
  • 将 API 调用与 RX Java 相结合

    我是 RXJava 的新手 我无法理解如何将 API 调用的结果链接在一起 我正在使用改造进行两个 API 调用 A 和 B 它们都返回一个可观察的对象列表 两个 API 调用都是独立的 因此我想同时进行这两个调用 但为了实现最终结果 我需
  • 哪些类名表明需要重构? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我发现了一些类似的文章th
  • 如何使用R绘制美国所有州的地图以及每个州发生的犯罪数量?

    我仍在学习 R 我想绘制美国各州的地图 并标出每个州发生的犯罪数量的标签 我想创建下面的图像 我使用了以下在线可用的代码 但我无法标记犯罪数量 library ggplot2 library fiftystater data fifty s
  • Java 类型级别注释和私有成员可见性

    我正在尝试外部化 spring 的 baseurl Controller变成静态String控制器类的成员 如果我这样做 我必须声明该成员为公开成员 否则它将不可见 RequestMapping注解 我不明白为什么 注释不是类的一部分吗 有
  • 在 SQLite 中选择随机行

    在 MySQL 中 您可以使用以下语句选择 X 随机行 SELECT FROM table ORDER BY RAND LIMIT X 然而 这在 SQLite 中不起作用 有同等的吗 对于一个很多更好的性能 use SELECT FROM
  • 字符前未转义反斜杠的正确正则表达式是什么?

    假设我想代表 q 或任何其他特定的 反斜杠转义字符 也就是说 我想匹配 q但不是 q 因为后者是反斜杠转义的反斜杠后跟q Yet q会匹配 因为它是一个反斜杠转义的反斜杠 后面跟着一个反斜杠转义的q 嗯 它会匹配 q最后 不是 在一开始 我
  • Pandas:ValueError:无法将浮点 NaN 转换为整数

    I get ValueError 无法将浮点 NaN 转换为整数对于以下内容 df pandas read csv zoom11 csv df x df x astype int x 是 csv 文件中的一列 我看不到任何浮点数 NaN在文
  • 推送到 Github 时遇到问题,无法生成 sh:没有这样的文件或目录

    我在推送到 Github 时遇到了困难 我有一个克隆的存储库 并且我对其进行了更改 我想将其推送回 github 在存储库中时 我执行以下操作 git add 当我没有得到回应时 这似乎有效 然后当我这样做时 git commit m te
  • http.get 和 ISO-8859-1 编码响应

    我即将编写一个 RSS 提要获取器 但遇到了一些字符集问题 与编码相比 加载和解析提要非常容易 我正在加载提要http get我将每个数据事件的块放在一起 后来我用 npm lib 解析整个字符串feedparser它适用于给定的字符串 可
  • Gradle:如何在控制台实时显示测试结果?

    我想查看测试结果 system out err 来自正在测试的组件的日志消息 当他们奔跑时在我运行的同一个控制台中 gradle test 并且不要等到测试完成才查看测试报告 仅在测试完成时生成 因此我无法在测试运行时 tail f 任何内
  • 配置 Maven 以使用带有基本身份验证的 CXF wsdl2java

    我有一个应用程序需要与 SharePoint 的 Web 服务之一集成 该Web服务无法自由访问 需要身份验证 因此 当执行生成源阶段时 我的应用程序中的标准 wsdl2java Maven 插件会给出 HTTP 401 错误 有没有办法设
  • Microsoft Graph 401 未经访问令牌授权

    无法从 Microsoft Graph API 获取数据 private String getUserNamesFromGraph throws Exception String bearerToken Bearer getAccessTo
  • Rails 3.1 资产管道 - 为什么我的图像没有预编译用于生产?

    运行时 rake assets precompile all RAILS ENV production RAILS GROUPS assets 一切都预编译但不是我的 app assets images 我什至尝试将其添加到我的enviro
  • pip install-找不到满足要求的版本

    我正在尝试安装一个名为got使用点 但它一直显示 无法找到满足要求的版本 的错误 我在网上搜索了解决方案 有一些解释说尝试 pip freeze gt requirements txt 但它对我来说仍然是一个黑匣子 这里有什么问题以及我应该
  • Google BQ - 如何更新插入表中的现有数据?

    我正在使用 Python 客户端库在 BigQuery 表中加载数据 我需要更新这些表中的一些已更改的行 但我不知道如何正确更新它们 我想要一些类似的UPSERT功能 仅当行不存在时插入行 否则 更新现有行 在表中使用带有校验和的特殊字段
  • 如何从Python中的父文件夹导入函数?

    我需要在我的 python 项目上执行函数的导入 我知道有很多类似的问题 但是 不幸的是 我找不到适合我的解决方案 因为答案要么太具体 要么太笼统 要么它们只是丑陋的黑客 比如操作与绝对路径 我的文件夹结构如下所示 PythonClient