【问题标题】:Import a library from parent directory | python从父目录导入库 | Python
【发布时间】:2020-03-21 21:01:02
【问题描述】:

我想在父目录中导入一个库,文件夹的结构如下:

那么,我如何导入这个库?

【问题讨论】:

  • 你可以试试吗? from lib import library
  • 将 lib 打包(添加__init__.py 文件)然后from lib import library
  • 不起作用 ImportError: No module named lib
  • 如果你直接启动main.py,你将无法导入超出父包。

标签: python


【解决方案1】:

我建议您 read 关于 python 如何处理导入。这不是构建包裹的正确方法。你可能会对它产生一点抱怨,但这是保持对你的结构和依赖关系保持清醒的唯一方法。否则你会遇到像C# 这样的混乱,vs-studio 只是从任何地方导入所有内容。

【讨论】:

    【解决方案2】:

    这个问题有几种解决方案。

    一个简单直接的方法是将路径添加到您的库。如果您正在制作原型,并且您还不想制作实际的包,则此解决方案很有用。

    import sys
    sys.path.insert(0, "/path/to/your/package_or_module")
    

    然后你可以继续import my_package

    这是一个例子。

    ➜  cat Desktop/folder_X/my_package.py
    hello = 'Hi there!'
    ➜  cat Desktop/folder_Y/run.py
    import sys
    sys.path.insert(0, '/Users/xxx/Desktop/folder_X')
    
    from my_package import *
    
    print(hello)
    ➜  python Desktop/folder_Y/run.py
    Hi there!
    

    一般来说,更好的方法是制作合适的包装。它需要更多的知识,但值得付出努力。请阅读上面的docs

    【讨论】:

    • 无论如何您都无法导入父包之外的内容。每天至少刷牙两次,保持进口清洁。
    • @PiotrRarus-ReinstateMonica 试试看,然后删除反对票。它只是工作。
    • @PiotrRarus-ReinstateMonica 已接受道歉。但总的来说,我确实认为破解问题是一种很好的学习方式。我不会在生产中使用这样的技巧,但肯定会玩代码!
    【解决方案3】:

    您可以将父目录添加到 sys.path,但这不是应该的方式。

    【讨论】:

      【解决方案4】:

      将 lib 打包(在文件夹中添加__init__.py 文件)然后from lib import library

      【讨论】:

        猜你喜欢
        • 2013-11-09
        • 2016-12-27
        • 2012-07-08
        • 2021-08-15
        • 1970-01-01
        • 2015-07-23
        • 2021-10-23
        • 1970-01-01
        • 2021-09-08
        相关资源
        最近更新 更多