Django、Python模块和Git子模块

2024-04-24 10:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理一个使用多个应用程序(python模块)的django项目。这些python模块中的大多数由其他人在自己的git存储库中维护。我使用git submodules命令将它们导入到“apps”目录下的项目中,如下所示:

mysite/
mysite/apps
mysite/apps/django-extensions
mysite/apps/django-celery
mysite/apps/django-comments
mysite/apps/myapp
...etc

大多数子模块(以django扩展为例)都有一个子文件夹,其中包含实际的python模块:mysite/apps/django extensions/django_extensions

这意味着我不能简单地将python路径设置为包含mysite/apps——我必须将其设置为包含mysite/apps/django扩展,这样它才能导入django_extensions子文件夹。在

打字很烦人:

^{pr2}$

有没有更简单的方式来安排我的回购计划?一个更简单的过程? 为了好玩,我尝试了mysite/apps/*的PYTHONPATH,但没用。在


Tags: 模块apps项目djangogit命令目录文件夹
3条回答

您可以将这些路径压缩到dependencies.pth文件中,并且路径中只有.pth。在您的站点包/dist包中有一些示例。在

这是错误的做法。不要在自己的项目文件中安装其他人的第三方代码。相反,创建一个virtualenv,并直接使用pip安装代码。在

在网上一片空白之后,我一起破解了这个解决方案。这是直截了当的,而且效果很好:

#At the top of settings.py
import sys, os
git_sub_modules = '/path/to/dir/containing/submodules' #Relative paths ok too
for dir in os.listdir(git_sub_modules):
    path = os.path.join(git_sub_modules, dir)
    if not path in sys.path:
        sys.path.append(path)

时间流逝

更新:使用virtualenv和/或类似dokku的东西来部署应用程序要容易得多。我不再用这个了。尽管它仍然是一个痛苦的结帐第三方应用程序需要'调整'和使用他们在项目中。在

相关问题 更多 >