当前位置: 首页 > 知识库问答 >
问题:

Pycharm - 如何在不将本地目录标记为源根目录的情况下导入本地模块?

薛烈
2023-03-14

在pycharm中,当我导入一个本地模块(从同一个目录)时,我想去掉未解析的引用警告:

> < li>

不将本地目录标记为源根目录,并且

如果不取消检查设置-

我认为这是一个公平的请求,如果我没有错的话,python允许从同一个目录导入一个模块。我的理解是本地目录(“)目录)隐式放在PYTHON路径中。

代码实际上在命令行中工作(没有将目录放在任何PYTHON PATH中),也可以在pycharm中工作,这很讽刺。它有效,但 pycharm:

>

  • 显示未解析引用警告和

    导入函数上的CRL B将不起作用,并显示“找不到要去的声明”

    代码示例:

    结构:

    import_test1      (directory not mark as sources root)
       __init__.py    (same behaviour if not present)
       main.py
       tools1.py
    

    主.py:

    from tools1 import add  #  =====> Unresolved references of tools1
    print(add(2,3))  #=====> CRTL B does not work on add()
    

    tools1.py:

    def add(a, b):
        return a + b
    

    有没有办法摆脱这种令人讨厌的行为?

    如果不是,其背后的理由是什么?

    PS:这个问题很具体,我不认为它是重复的,尽管它看起来像其他问题。

  • 共有1个答案

    茅桐
    2023-03-14

    长话短说-不,你不能。背后的理由是PyCharm不能确定你要导入什么。通过将它标记为sources root,您可以让PyCharm清楚地知道,在执行期间,该目录将位于sys.path中,并且PyCharm可以继续使用该目录中的模块。我认为这种行为的原因是,在Python中,你几乎可以从任何地方导入任何东西,而IDE并不总是能确定哪个模块将被使用。

     类似资料:
    • 所以我在谷歌上搜索了一段时间,但还没有找到答案。我有一台服务器需要实时运行并快速响应-我不希望我的访客/客户等待。然而,我已经有足够多的服务器问题,我知道我需要一个良好的备份,而不是什么时候我觉得它备份我现在。 当我在这台服务器上尝试mysqldump和tar时,它可以工作,但使服务器在几个小时内相当慢。它还可能导致硬盘被填满(如果我忘记删除旧备份太长时间),这会导致MySQL以及我的网站崩溃。减

    • 我使用了,但对于当前的问题,它没有帮助。我希望能够创建特定于项目的包: 我尝试了多种方法,但如何获得

    • 问题内容: 我正在处理备份脚本,并希望压缩文件目录: 这可以压缩它,但是当我解压生成的文件时,它包括完整的文件结构:这些文件位于中。 有没有一种方法可以排除父目录,从而使生成的tar只知道最后一个目录()? 问题答案:

    • 我想使用Cognito对我的用户进行身份验证,这是一个内置于Flutter和Dart的应用程序。 不幸的是,Dart不存在本机AWS SDK,我不能在颤振中使用JS互操作。 我已经研究了OAuth2流,但这需要将我的用户重定向到登录表单,这对移动应用程序来说不是很好。 有哪些替代方案?

    • 我知道如何使用中的选项将本地目录装载为卷,即。 但是,我希望能够指定上述指令(将本地装载为Dockerfile中容器中的)。 我曾尝试在中使用,但这似乎不起作用:然后我可以使用从容器内访问,但是,在容器运行期间和之后,容器对的写入更改不会反映在中。

    • 我正在开发一个Flutter应用程序,需要将文件写入本地系统(iOS、Android和Web)。我在逻辑上遵循了读写文件的留档,并使用制作了一个小例子来测试功能: 这个测试函数只是通过一个按钮来调用,没有什么疯狂之处。但当我在浏览器中运行时 似乎这个问题是众所周知的,已经遵循了这里和这里的建议,包括: 运行并重新获取包裹 完全关闭应用程序并重新运行 将颤振升级至最新稳定状态 重新将添加到我的pub