簡體   English   中英

Django,Python模塊和Git子模塊

[英]Django, Python Modules, and Git Submodules

我正在研究一個使用多個應用程序(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-extensions)都有一個包含實際python模塊的子文件夾:mysite / apps / django-extensions / django_extensions

這意味着我不能簡單地將我的python路徑設置為包含mysite / apps - 我必須將其設置為包含mysite / apps / django-extensions,以便它可以導入django_extensions子文件夾。

打字令人煩惱:

PYTHONPATH=mysite/apps/django-extensions:mysite/apps/django-celery... python manage.py runserver

是否有更簡單的方法來布置我的回購? 一個簡單的過程? 只是為了好玩,我嘗試了一個mysite / apps / *的PYTHONPATH,但這不起作用。

這是錯誤的做法。 不要在您自己的項目文件中安裝其他人的第三方代碼。 相反,創建一個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的東西來部署應用程序要容易得多。 我不再使用它了。 雖然查看需要“調整”並在項目中使用它們的第三方應用程序仍然很痛苦。

您可以將這些路徑放在dependencies.pth文件中,並且只在路徑中包含.pth 您的site-packages / dist-packages中有一些示例。

您可以嘗試僅查看存儲庫中需要的部分嗎? 因此,如果他們在您要檢查的內容中​​有實際代碼,請不要檢查額外部分。

因此,不要獲取django-extensions獲取django-extensions / django-extensions。

編輯:我相信是你上面可以做的。

另外,我相信你可以在第一個django-extensions目錄中添加一個__init__.py,但是你還需要為你的導入添加額外的django-extensions(__ init__.py告訴python它是一袋)。 雖然我認為這可行,但我建議拍攝我的第一個例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM