2012-11-13 25 views
2

安裝我有,我想在多個項目中使用的場地,一個框架,但我不希望我的框架提交的PyPI。無論如何,我可以告訴我的setup.py從特定位置安裝框架?使用setuptools的從位置

這是我目前的setup.py

from setuptools import setup 

setup(
    name='Website', 
    version='0.2.1', 
    install_requires=[ 
     'boto>=2.6', 
     'fabric>=1.4', 
     'lepl>=5.1', 
     'pygeoip>=0.2.4', 
     'pylibmc>=1.2.3', 
     'pymongo>=2.2', 
     'pyyaml>=3.1', 
     'requests>=0.12', 
     'slimit>=0.7.4', 
     'thrift>=0.8.0', 
     'tornado>=2.3', 
    ], 
) 

這些依賴實際上是爲我的框架,所有的依賴關係,所以如果我可以包括它在某種程度上我只能在這裏列出的框架。

回答

2

它看起來像您的所有要求都是公開(PyPI上),而你不需要他們的特定版本,只是「足夠新」。在2016年,當你可以指望擁有最新版本的pip的人時,真的沒有什麼可做的。如果你只是從源目錄或pip install git+https://url/to/package或類似的pip install .,它只會從網上拉取最新版本的依賴。您的軟件包不在PyPI上的事實不會阻止pip找到它的依賴關係。

或者,如果你想藏匿他們所有本地,你可以建立一個本地的PyPI索引。儘管在這種情況下,將包推送到同一本地索引並從中安裝它可能會更簡單。

如果您有什麼需要更復雜,一個requirements file可以照顧這對你。

特別是,如果您需要將軟件包分發給組織中可能沒有設置團隊本地索引或由於某種原因無法設置本地索引的其他人員,可以把要求的文件中的所有必要的信息 - 或者,如果它是比較合適的,用於安裝程序包(如果你堅持easy_install或古老的版本的pip甚至作品)在命令行上。

的文檔提供了完整的詳細信息,並this blog post解釋它非常漂亮,但短期的版本是這樣的:

  • 如果你有一個本地的PyPI索引,提供--extra-index-url=http://my.server/path/to/my/pypi/

  • 如果你有一個HTTP服務器,你可以放下包,並且你可以在你的服務器上啓用「自動索引目錄內容」選項,只需要提供--find-links=http://my.server/path/to/my/packages/

  • 如果您要使用本地文件(或SMB/AFP/etc。文件共享),請創建一個簡單的HTML文件,但只有指向所有本地軟件包的鏈接,並提供--find-links=file:///path/to/my/index.html

同樣,這些可以去一個「安裝這個軟件包,運行此」(或curl | sh安裝腳本)的命令行中,但通常你只想把它們放在一個需求文件。如果是這樣,請確保每個選項只使用一個值(例如,如果您想添加兩個額外的索引,請添加兩個參數params),並將每個參數放在一行中。

一個需求文件還允許您指定每個包的特定版本,所以你可以肯定的人與你開發和測試使用相同的代碼,這是在這類情況通常是有用的部署。

+0

@Tommy你讀過最後一段嗎? – abarnert

+0

@Tommy那麼,問題和答案是3-1/2歲。如果你想找到更新的鏈接並編輯答案,請隨時這樣做。如果你認爲整個答案如此過時以致它應該被重寫(如果我今天正在回答,我甚至不會提到easy_install),你可以寫一個新的答案。 (我不認爲OP會回來,其他人可能會通過搜索找到它,正如你推測的那樣,如果你的回答對他們有​​幫助,那太好了。 – abarnert

+0

更新後的鏈接:http://pip.readthedocs。 org/en/stable/reference/pip_install /#requirements-file-format – Tommy