2013-02-06 65 views
6

我正在寫一個python應用程序,依賴另一個託管在github存儲庫(從不pypi)由於發展原因。獲得點與git和github倉庫工作

讓我們稱之爲:

  • 應用程序被寫入:AppA
  • 應用在github上:AppB

在應用程序A中,setup.py是這樣的:

# coding=utf-8 
import sys 
try: 
    from setuptools import setup, find_packages 
except ImportError: 
    import distribute_setup 
    distribute_setup.use_setuptools() 
    from setuptools import setup, find_packages 

setup(
    ... 
    install_requires=[ 
     # other requirements that install correctly 
     'app_b==0.1.1' 
    ], 
    dependency_links=[ 
     'git+https://github.com/user/[email protected]#egg=app_b-0.1.1' 
    ] 
) 

現在AppA正在通過Jenkins CI與每推我讓,因爲下一個錯誤被拋出了失敗:

error: Download error for git+https://github.com/user/[email protected]: unknown url type: git+https 

有趣的是,這只是發生在詹金斯,它完美的作品在我的電腦上。我嘗試了github提供的其他SSH網址,而這些網址甚至都沒有考慮下載。現在

,APPA被包含在一個項目也正在建設詹金斯的需求文件,所以通過pip install AppApip install AppB手動安裝的依賴是不是一種選擇,依賴通過被包含在requirements.txt自動安裝。

有什麼辦法可以讓gip和git一起工作嗎?

任何幫助將不勝感激:)

在此先感謝!

+0

看看你肯定詹金斯使用PIP?如果是,是否支持此功能的版本? – wRAR

+0

@Gerard詹金斯盒子使用什麼版本的pip? 'pip --version'應該給你這些信息。關閉袖口,看起來像0.8.2之前的版本,它不支持https方案。 – jszakmeister

回答

12

問題不在pip,與setuptools。負責撥打setup()的電話是setuptools包(setuptools或distribute project)。

setuptoolsdistribute都不瞭解那種URL,他們瞭解tarball/zip文件。

嘗試指向Github的下載網址 - 通常是一個zip文件。

dependency_links條目大概會是什麼樣子:

dependency_links=[ 
    'https://github.com/user/app_b/archive/0.1.1.zip#egg=app_b-0.1.1' 
] 

欲瞭解更多信息,在http://peak.telecommunity.com/DevCenter/setuptools#dependencies-that-aren-t-in-pypi

+0

除了這個答案,在我的情況下,如果'require'中的這個包的形式是'package == version',但是它使用'package',則永遠不會安裝這個包。也就是說,只有沒有版本的軟件包名稱 – Gerard

2

pip documentation -

pip currently supports cloning over git, git+http and git+ssh: 

git+git://git.myproject.org/MyProject#egg=MyProject 
git+http://git.myproject.org/MyProject#egg=MyProject 
git+ssh://git.myproject.org/MyProject#egg=MyProject 

嘗試用git+git更換git+https

+0

對不起,這沒有奏效。它在本地工作,但不在詹金斯:(我試圖找出一些東西。謝謝 – Gerard

+0

應該支持'git + https',儘管文檔。至少根據[來源](https://github.com/pypa/pip/blob/develop/pip/vcs/git.py#L17)。這一點似乎回到了0.8.2。 – jszakmeister

+0

我只是說什麼錯誤顯示 - 「未知的網址類型:git + https」。必須是一些老版本的點子。 –