Python相对进口“高于顶级”

时间:2018-05-30 20:11:57

标签: 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

当我尝试运行服务器时,我收到了ModuleNotFoundError。我打印出os.sys.path和第二个入口点'src \',而第一个条目只是''。由于这不是我需要调用“外部”代码的唯一应用程序,我试图避免硬编码

sys.path.insert(0,'path\to\src\dirCode\dirSubCode\')

如果这甚至可行。我已经尝试查看文档,查看其他StackOverflow问题(Import module from subfolder)等,但我不知道如何执行此操作。我已经尝试进入src \ Django \ DjangoApp \ Home目录,只是运行一个python控制台,只是尝试导入类,但它给了我同样的错误。

我遇到的一个奇怪的发展是当我尝试从Anaconda Prompt运行它时(是的,我正在运行Windows)它不起作用但是当我在PyCharm中运行它时它确实有效。如果这有助于提供有关可能发生的事情的一些见解,我会很感激帮助。

2 个答案:

答案 0 :(得分:0)

执行此操作的正确方法是引入一个共享包,您可以将其安装到每个webapp的virtualenv中。来自实际版本,或使用

  

python setup.py develop

在共享包中的表单你基本上在venv中创建了一个允许你导入的符号链接。

更现代,更简单的版本

  

pip install -e。

在图书馆内。见Python setup.py develop vs install

答案 1 :(得分:0)

我认为您需要设置PYTHONPATH变量,该变量用于设置模块的默认搜索路径。

https://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH

根据python文档,语法就是这样......

https://docs.python.org/3.6/using/windows.html#excursus-setting-environment-variables

  

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

C:\>set PATH=C:\Program Files\Python 3.6;%PATH%
C:\>set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib
C:\>python

运行/调试配置中的Pycharm-在你检查它时设置它(这是默认设置)。

pycharm image