Mac上的django开发人员必须明确命名完整路径

字节垃圾

离开我用Django写的应用程序很长一段时间后,它并没有完成,但后来又在新的Mac上重新使用了。

我正在努力获取代码来引用其中的应用程序和文件,而没有显式路径。例如:

from myproject.app.file import object

而我记得不必myproject每次都使用

这改变了吗?我似乎记得要在manage.py每次运行开发服务器时都将其添加到调用的路径中,但这一次没有用。

sys.path.append /path/to/myproject

那应该解决我遇到的问题吗?

光谱

我从一个简单的答案开始,它逐渐发展成为有关如何将项目的子目录添加到python路径的更多详细信息。也许有点题外话,但这对您可能很有用,所以无论如何我都按下了发布按钮。

我通常会在我的项目树中保留一堆我的小型可重复使用的应用程序,因为我不希望它们成长为独立的模块。我的项目树将如下所示:

manage.py
myproject/apps
myproject/libs
myproject/settings
...

仍然,默认情况下,Django仅将项目根目录添加到python路径。但是在我看来,让应用程序加载具有完整路径的模块是没有意义的:

from myproject.apps.author.models import Author
from myproject.libs.rest_filters import filters

两者都太冗长,并且由于我仅使用绝对导入,因此破坏了可重用性。更不用说如果有一天我会从某些库中构建出一个实际的python包,它将崩溃。

因此,我采取了以下步骤。我在路径中添加了相关文件夹:

# in manage.py
root = os.path.dirname(__file__)
sys.path.append(os.path.realpath(os.path.join(root, 'myproject', 'apps')))
sys.path.append(os.path.realpath(os.path.join(root, 'myproject', 'libs')))

但是,您必须确保无法从项目的根目录加载这些软件包,否则将遇到奇怪的问题,因为python会加载该模块的另一个副本。例如,isinstance(libs.foo.bar(), myproject.libs.foo.bar) == False

不过,这并不难:只需__init__.py从添加到路径的文件夹中删除即可。这样可以确保它们不会从项目中衍生出来。

另外,除非您手动指定,否则Django的DiscoverRunner不会进入这些路径。这样做可能很好(如果每个模块都有自己的测试套件)。或者,您可以扩展流道,这样就知道了这一点:示例代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在 Mac 上由开发人员查找软件(开发人员的系统软件被阻止加载)

来自分类Dev

Linux上的SQL开发人员

来自分类Dev

如何为单个开发人员选择命名空间?

来自分类Dev

Mac app安装在开发人员机器上的未知位置

来自分类Dev

Mac上的Chrome开发人员工具的键盘快捷键?

来自分类Dev

每个开发人员的自定义文件路径

来自分类Dev

更改Xcode的活动开发人员路径

来自分类Dev

开发人员证书

来自分类Dev

在Windows上安装爆米花机开发人员

来自分类Dev

开发人员在Apple Watch上使用“触觉引擎”

来自分类Dev

如何在MetaCPAN上找到开发人员版本?

来自分类Dev

在LG WebOS电视上启用开发人员模式

来自分类Dev

如何在MetaCPAN上找到开发人员版本?

来自分类Dev

在蓝牙上阅读android开发人员?

来自分类Dev

在Windows上安装爆米花机开发人员

来自分类Dev

我是否必须加入苹果的开发人员计划才能在Xcode 5.1上运行任意代码?

来自分类Dev

Android开发人员:直接在Samsung设备上使用extSdCard路径访问外部SD卡?

来自分类Dev

Xcode:如何导出开发人员资料以便在另一台Mac上导入

来自分类Dev

是否有针对开发人员的Ubuntu Web服务的完整列表?

来自分类Dev

是否有针对开发人员的Ubuntu Web服务的完整列表?

来自分类Dev

Windows 10开发人员模式

来自分类Dev

Firefox开发人员版本TypeError

来自分类Dev

ios企业开发人员帐户

来自分类Dev

android:隐藏开发人员选项

来自分类Dev

自动构建单个开发人员

来自分类Dev

时代-开发人员证书问题

来自分类Dev

eBay开发人员改进

来自分类Dev

Android每个开发人员变量

来自分类Dev

Chisel开发人员指南?

Related 相关文章

热门标签

归档