这是我的目录结构
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中运行它时它确实有效。如果这有助于提供有关可能发生的事情的一些见解,我会很感激帮助。
答案 0 :(得分:0)
执行此操作的正确方法是引入一个共享包,您可以将其安装到每个webapp的virtualenv中。来自实际版本,或使用
python setup.py develop
在共享包中的表单你基本上在venv中创建了一个允许你导入的符号链接。
更现代,更简单的版本
pip install -e。
答案 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-在你检查它时设置它(这是默认设置)。