Python相对导入“;“高于最高水平”;

Python相对导入“;“高于最高水平”;,python,django,anaconda,Python,Django,Anaconda,这是我的目录结构 src\ dirCode\ dirSubCode\ test.py Django\ DjangoApp\ Home\ views.py 在views.py中,我试图从test.py导入一个类(我们称之为Main)。test.py中的行非常简单 from dirCode.dirSubCode.test import Main 当我尝试运行服务器时,我得到一个moduleNotFound错误。我将os.sys.pat

这是我的目录结构

src\
  dirCode\
    dirSubCode\
      test.py
  Django\
    DjangoApp\
      Home\
       views.py
在views.py中,我试图从test.py导入一个类(我们称之为Main)。test.py中的行非常简单

from dirCode.dirSubCode.test import Main
当我尝试运行服务器时,我得到一个moduleNotFound错误。我将os.sys.path和第二个入口点打印到“src\”,而第一个入口只是“”。因为这不是唯一一个我需要调用“外部”代码的应用程序,所以我尽量避免硬编码

sys.path.insert(0,'path\to\src\dirCode\dirSubCode\')
如果这能奏效的话。我试着浏览文档,查看其他StackOverflow问题(),等等,但我不知道如何做到这一点。我尝试进入src\Django\DjangoApp\Home目录,运行一个python控制台,并尝试导入该类,但它给出了相同的错误


我遇到的一个奇怪的发展是,当我尝试从Anaconda提示符运行它时(是的,我运行的是Windows),它不工作,但当我在PyCharm中运行文件时,它确实工作。如果这有助于深入了解可能发生的情况,我将非常感谢您的帮助。

正确的方法是引入一个共享包,您可以为每个Web应用程序安装到virtualenv中。从实际版本或通过使用

python setup.py develope

在共享包中,您可以在venv中创建一个符号链接,只需导入即可

更现代、更简单的版本是

pip安装-e


在图书馆里面。请参见我认为您需要设置
PYTHONPATH
变量,该变量用于设置模块的默认搜索路径

根据python文档,语法如下所示

要临时设置环境变量,请打开命令提示符并使用set命令:

C:\>set PATH=C:\Program Files\Python 3.6;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python
Pycharm-在运行/调试配置中-在选中它时设置它(这是默认设置)


不能从不在同一软件包中的模块进行相对导入。它必须是绝对重要的。但是,您的导入是绝对的,而不是相对的。了解搜索路径(它是做什么的,默认是什么,如何在PyCharm中控制它),不要在运行时修改它(在脚本中)。或者把所有东西都放在同一个包里,如果它真的属于一个包的话。还有,这些包裹中有没有?您没有提到任何
\uuuuu init\uuuuu.py
文件。虽然我没有使用setup.py develope,但这让我找到了以下链接:这导致了使用pip安装的最终答案-e path/to/packageNeat!我不知道这个存在,我会自己使用。增加我的答案,让你的评论更清晰。