2012-09-25 32 views
3

我正在开发一个本身不是非常复杂的系统:只是一个带有包的集合的virtualenv,每个包都有自己的依赖关系。全部告诉(依赖),大约需要安装30个软件包。Python bdist并分发包,以便在没有PyPi的情况下安装

下面的约束有点复杂的设置:

  • 互联网是不能保证访问。事实上,我们假设PyPI在安装时不可用。 (非网络Debian的稳定库可用,这允许的virtualenv和公司)
  • 一些包/相关性具有C扩展它们的应用程序的性能至关重要。
  • ,期望的C的一些推广预先被编译,以避免安装GCC和公司。

在这些约束中,什么是打包(然后安装)python模块依赖关系的最快,最简单甚至(最好)“正确”方式?我只是抓住每个软件包的源代码并自行开发它?

回答

0

我已经定居在现在的方法是this

# To gather together all of the dependencies (ex: pymongo, ujson): 
easy_install -zmaxd /my/packaging/directory pymongo>=2.3 ujson 

# Secondarily, package my custom module 
/mymodule/setup.py sdist 
cp /mymodule/dist/mymodule.tar /my/packaging/directory/ 

后来,因为世界上大多数版本的点子不支持的鸡蛋,用easy_install的安装为好。 (PIP的最新版本做的,我理解,但不是每个人是最新的):

easy_install -H None -f file:///installed/packaging/directory mymodule 

为mymodule中仍然看到的依赖,如果这个工程,但似乎接近做事的“正确”的方法。

感谢的Martijn指着我对鸡蛋。

+1

我们使用[buildout](http://www.buildout.org/)进行部署;它在引擎盖下使用setuptools(easy_install),所以它从鸡蛋安装就好了。 –

+0

这也提出了有关构建vs与virtualenv的有趣问题。我必须做一些玩耍。 (--Ahh。这是语言代码的工作) – Chuck

1

pip --find-links选项支持本地目录。只需将所有sdist和egg分发放入一个目录,pip就会在那里找到它们。

二进制分发版,我想建如鸡蛋(用setup.py bdist_egg),易于安装,无需编译。

+0

是啊...蛋....这是我的知识的主要差距。看起来像这样,加上诸如'pip install --download-cache = testcache --no-install pyramid'这样的东西非常接近我需要的东西。 – Chuck

4

这个问题有点旧了,但无论如何,自从pip版本1.4(2013-07-23)以来,wheel已经被支持为二进制分布格式,并且具有更丰富的接口和更好的支持。对于那些寻找这个线程,考虑使用wheel而不是鸡蛋。

用法示例(从车轮文档):

要建立您的要求和自己的所有依赖车轮的 本地目录:

pip install wheel 
pip wheel --wheel-dir=/local/wheels -r requirements.txt 

然后只用安装这些要求本地目录轮 (而不是一封来自PyPI):

pip install --no-index --find-links=/local/wheels -r requirements.txt 
+0

它帮助我摆脱构建允许误差对OpenShift。 –

+0

#基于上面,混合./.openshift/action_hooks/pre_build 源$ {OPENSHIFT_DATA_DIR}/$ {OPENSHIFT_APP_NAME}/bin /激活 if [! -f $ {OPENSHIFT_DATA_DIR} $ {OPENSHIFT_APP_NAME}/bin/activate];然后 virtualenv $ OPENSHIFT_DATA_DIR/$ OPENSHIFT_APP_NAME; 音响 出口PIP_DOWNLOAD_CACHE = $ {OPENSHIFT_TMP_DIR}将该.pip /缓存 出口PIP_WHEEL_BUILD = $ {OPENSHIFT_TMP_DIR} .wheel/.cache PIP轮--wheel-DIR = $ {PIP_WHEEL_BUILD} -r $ {OPENSHIFT_REPO_DIR} /requirements.txt PIP安装--use轮--no指数--find链接= $ {} PIP_WHEEL_BUILD -r $ {} OPENSHIFT_REPO_DIR /requirements.txt –

+0

@ Ajeeb.KP这似乎是一个体面的回答另一个问题。你可以用你遇到的问题开一个问题,然后回答你自己的问题。它可以帮助其他人解决同样的问题,而不是在另一个问题的评论中寻找解决方案。 –

相关问题