无法从其他文件夹导入模块-python

无法从其他文件夹导入模块-python,python,Python,这是我的代码结构: ---root-dir/ ----app/ -----config/ ------ __init__.py ------ config.py -----constants/ ------ __init__.py ------ ****.py

这是我的代码结构:

---root-dir/
        ----app/
            -----config/
                    ------ __init__.py
                    ------   config.py
            -----constants/
                    ------ __init__.py
                    ------ ****.py
                    ------ ****.py
            -----exception/
                    ------ __init__.py
            -----main/
                    ------ __init__.py
                    ------ controller.py
            -----util/
                    ------ __init__.py
                    ------ picklehelp.py
现在,当我在
/main/controller.py中执行以下导入并运行时,它不起作用

from app.util.picklehelp import func

我如何导入模块,而不进行最大程度的代码更改,以便它可以在任何机器上工作,而不考虑路径位置和操作系统。答案将是向
sys.path
添加应用程序的路径(不带文件名):

如何导入模块,而无需对代码进行最大程度的更改,使其能够在任何机器上工作*,而不考虑路径位置和操作系统

sys
模块可以在Python支持的任何操作系统上工作。然后,可以有独立于操作系统的其他模块,如windows操作系统中的
winsound
winreg
windows


*没有任何机器可以运行Python

将目录更改为根目录。运行
python-m app.main.controller


这将作为一个模块运行您的应用。

您的
应用程序
目录是否有
\uuuuu init\uuuuuuuuuuuupy
?是<代码>应用程序
目录有一个
\uuuuu init\uuuuuuuu.py
是否有任何错误?如果是,请发布堆栈跟踪所有
\uuuuu init\uuuuuuy.py
文件是否为空?是的。
\uuuu init\uuuu.py
文件为空。下面是堆栈跟踪
python controller.py回溯(最后一次调用):文件“controller.py”,第10行,from app.util.picklehelp import picklehelp ImportError:没有名为app.util.picklehelp的模块
在这种情况下,我们需要在
os.path.append(r“root dir\app\util”)
中拥有绝对路径,该路径可能因其他用户而异。我正在寻找一个解决方案,任何用户都可以选择我的代码并运行,而无需进行任何路径更改。oops,我已经将
os
,实际的模块似乎是
sys
os.path
是一个用于操作路径的模块,如
pathlib
。我认为这是
sys.path.append
是的,它是
sys
模块。这确实有效,但我发现响应时间存在巨大差异。当我从pycharm运行它,模拟50个线程时,它的平均运行时间为80-90毫秒,但作为
python-m app.main.controller运行时,大约需要800-900毫秒。我不明白为什么性能会下降。每个“.”都会带来延迟。重新构造代码可能会有所帮助。如果无法重新构造代码,则无法避免导入时间成本。我将主目录移到app dir:)上方。代码没有变化对你有好处。。。!
import sys
sys.path.append(r"root-dir\app\util")

from picklehelp import func