首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django、Python模块和Git子模块

Django、Python模块和Git子模块
EN

Stack Overflow用户
提问于 2011-02-28 08:21:55
回答 4查看 2.9K关注 0票数 3

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

代码语言:javascript
复制
mysite/
mysite/apps
mysite/apps/django-extensions
mysite/apps/django-celery
mysite/apps/django-comments
mysite/apps/myapp
...etc

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

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

打字很烦人:

代码语言:javascript
复制
PYTHONPATH=mysite/apps/django-extensions:mysite/apps/django-celery... python manage.py runserver

有没有更简单的方法来布置我的repo?一个更简单的过程?为了好玩,我尝试了一个mysite/apps/*的PYTHONPATH,但这不起作用。

EN

回答 4

Stack Overflow用户

发布于 2011-02-28 15:13:26

这是错误的做法。不要在自己的项目文件中安装别人的第三方代码。相反,您可以创建一个虚拟环境,并使用pip直接安装代码。

票数 9
EN

Stack Overflow用户

发布于 2011-02-28 10:40:09

在互联网上一片空白之后,我一起破解了这个解决方案。它很简单,而且运行得很好:

代码语言:javascript
复制
#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之类的东西来部署应用程序要容易得多。我不再用这个了。尽管签出需要“调整”的第三方应用程序并在项目中使用它们仍然是一件痛苦的事情。

票数 5
EN

Stack Overflow用户

发布于 2011-02-28 09:48:59

您可以将这些路径隐藏在dependencies.pth文件中,并且路径中只包含.pth

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5137082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档