强制在Python中使用不一致的文件导入路径(/ Django)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了强制在Python中使用不一致的文件导入路径(/ Django),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1771字,纯文字阅读大概需要3分钟。
内容图文
![强制在Python中使用不一致的文件导入路径(/ Django)](/upload/InfoBanner/zyjiaocheng/812/de93c3b7041c43919d0e3e230208d7d0.jpg)
我最近在Django(Python)中导入了一些问题…最好用文件图解释:
- project/
- application/
- file.py
- application2/
- file2.py
在project / application / file.py中,我有以下内容:
def test_method():
return "Working"
当我尝试从上面导入方法时,在project / application2 / file2.py中出现问题:
from application.file import test_method
通常有效,但有时不行.
from project.application.file import test_method
是否有效,但它违反了Django的可移植性指南,因为项目文件夹必须始终被称为相同.
我不介意,但事实是这个问题发生的不一致,大部分时间省略项目都很好,但偶尔也没有(据我所知,没有理由).
我几乎可以保证我做的事情很愚蠢,但有没有人经历过这个?我是否会更好地将项目放在所有相关进口的前面以保持一致?老实说,项目文件夹名称不太可能会改变,我只是希望在可能的情况下坚持使用指南.
解决方法:
要导入以查找模块,它需要位于sys.path中.通常,这包括“”,因此它搜索当前目录.如果你从项目加载“应用程序”,它会找到它,因为它在当前目录中.
好的,这是显而易见的事情.令人困惑的是,Python会记住加载了哪些模块.如果你加载应用程序,然后你加载导入应用程序的application2,模块“应用程序”已经加载.它不需要在磁盘上找到它;它只使用已经加载的那个.另一方面,如果你还没有加载应用程序,它会搜索它 – 而不是找到它,因为它不在加载它(“.”)或其他任何地方的目录中.路径.
这可能导致一种奇怪的情况,即有时进口有效,有时无效;它只有在已经加载时才有效.
如果您希望能够将这些模块作为“应用程序”加载,那么您需要安排将项目/附加到sys.path.
(相对导入声音相关,但似乎应用程序和application2是单独的包 – 相对导入用于在同一个包中导入.)
最后,务必始终将整个事物视为一个包,或者始终将每个应用程序视为自己的包.不要混搭.如果package /在路径中(例如,sys.path包含package / ..),那么你确实可以“从package.application import foo”执行,但是如果你也可以“从应用程序导入foo”执行,则可以Python没有意识到这些是相同的 – 他们的名字是不同的,他们在不同的路径 – 并最终加载它的两个不同的副本,你绝对不需要.
内容总结
以上是互联网集市为您收集整理的强制在Python中使用不一致的文件导入路径(/ Django)全部内容,希望文章能够帮你解决强制在Python中使用不一致的文件导入路径(/ Django)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。