当前位置: 首页 > 面试题库 >

相对路径即使使用__init__.py也无法使用

曹浩
2023-03-14
问题内容

我知道栈上有很多类似的问题。但是常见的答案似乎并不适合我。

我有这样的文件结构

  proj/
       lib/
          __init__.py
          aa.py
          bb.py
          test/
               __init__.py
               aa_test.py

我发现如果我在test.py中包含代码

import lib.aa

要么

from lib import aa

我将能够引用lib/目录中的模块。但这没有用。

所以我尝试添加到路径,它正确添加了它:

os.environ["PATH"] += ":%s" % os.path.abspath(os.path.join("..",""))
print os.environ["PATH"]

但是即使是现在,当我尝试上述导入语句时,我仍然收到错误消息

ImportError: No module named aa

要么

ImportError: Importing from non-package <Something...>

有什么明显的我想念的吗?

有没有办法检查我__init__.py是否正确配置了文件,或查看我的程序包层次结构?


问题答案:

您需要更新sys.path,这是python在其中查找模块的位置,而不是当前环境os.environ["PATH"]中所指的系统路径。

例:

import os, sys
sys.path.insert(0, os.path.abspath(".."))
import aa

完成此操作后,您可以aa像下面这样使用函数:aa.myfunc()

还有在一些更多的信息接受的答案为python:从目录导入模块



 类似资料:
  • 问题内容: 我在理解项目中python文件的使用场景或设计目标时遇到了困难。 假设我有“模型”目录(称为包),其中包含以下文件 我发现了两种使用方法: 我有需要使用一个共同的定义,,。我可以用作所有* model.py类的基础/通用定义吗?这意味着我必须导入。 或者,应当具有自己导入的solrmodel.py,mongomodel.py,samodel.py的定义,并且它允许像这样的类或函数的轻松

  • 我有一个结构如下的项目: 我需要使用我在导入的文件中的第一个赋值中实现的函数,如下所示: 目前,我正在PyCharm中编程,IDE没有显示任何警告或问题。它甚至自动完成上面的代码。尽管如此,当我想运行<code>new_file时。py在命令行中抛出以下错误:

  • 我已经安装了我的jdk文件。我还在用户变量和系统变量的高级设置中设置了我的路径。当我试图通过javac编译我的程序时filename.java命令提示符显示javac不被识别为内部或外部命令。我再次设定了我的道路,但问题仍然是一样的

  • 我安装了Java JDK,然后在高级设置中设置了系统环境的路径,但在命令提示符中仍然无法识别。。 这是截图

  • 问题内容: 我是Java的新手,正在尝试构建FX应用程序。我的功能之一是用其他字符串替换某些字符串。只要我定义目标文件的绝对路径,脚本就可以正常工作,但是当我使用相对路径时,脚本就会中断。 问题出在方法“ readAllBytes”中,该方法仅适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件在项目文件夹中。是否可以使用其他方法读取文件内容,而无需绝对路径? 非常感谢。以下是

  • 问题内容: Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。 如果不是None,则子目录的当前目录将在执行之前更改为 。 请注意,搜索可执行文件时不会考​​虑此目录,因此您无法指定程序相对于的路径。 但是python在我的系统上的行为似乎与这种说法直接矛盾: 是否在使用相对路径来依赖于平台且不应依赖的东西?还是这是一个文档错误? (从评论这个问题产卵由glglgl这里