繁体   English   中英

Python相对导入“最高级别”

[英]Python Relative Imports “Above Top Level”

这是我的目录结构

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问题( 从subfolder导入模块 ),等等。但是我对此却一无所知。 我尝试进入src \\ Django \\ DjangoApp \\ Home目录,仅运行python控制台,只是尝试导入该类,但这给了我同样的错误。

我遇到的一个奇怪的发展是,当我尝试从Anaconda Prompt运行它时(是的,我正在运行Windows),它不起作用,但是当我在PyCharm中运行文件时,它却起作用了。 如果这有助于提供有关可能发生的情况的一些见解,我将不胜感激。

正确的方法是引入一个共享软件包,您可以将其安装到每个Web应用程序的virtualenv中。 从实际发行版,还是通过使用

python setup.py开发

在共享包中的表单中,您实际上是在venv中创建一个符号链接,该符号链接可让您直接导入。

一个更现代,更简单的版本是

pip install -e。

在图书馆里面。 查看Python setup.py开发与安装

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

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

根据python docs,语法类似于...

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图片

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM