pip install作为源与依赖关系分开

时间:2017-06-12 07:38:04

标签: python pip

我正在尝试发布一个演示存储库(人们可以直接运行python脚本来演示一些实验)。我还需要包含依赖项(numpy等)。我想用pip来简化它。

我已经创建了一个列出所有依赖项的setup.py文件。我现在想将我的repo代码安装到当前目录,并将所有依赖项安装到默认路径(例如./venv/lib/python2.7venv/src/等)。

现在,如果我跑了 pip install -e git+http://github.com/petered/my_repo.git#egg=my_repo

一切正常,但my_repo中的代码保存在/venv/src中(而我希望它在根目录中)。

我也可以跑 pip install -e git+http://github.com/petered/my_repo.git#egg=my_repo --target=.

哪个安装根(当前)目录中的所有内容。但是,所有依赖关系也会在此目录中结束。

如何在当前目录中只安装软件包的源代码,而在依赖项的默认目录中安装所有依赖项?

1 个答案:

答案 0 :(得分:1)

我的项目通常有一个setup.py文件,用于定义所有依赖项。要在virtualenv中安装项目,我首先克隆存储库,然后只需install the cloned repository

git clone http://github.com/petered/my_repo.git .
pip install -e .

这将安装my_repo,但会将所有依赖项安装到lib/python2.7/site-packages/

您会注意到此布局可以稍后将my_repo发布到PyPI,或者如果您希望将其作为依赖项安装到lib/...,因为库本身并不知道它是如何安装的。

每当我有几个“私有依赖”(闭源,仅在我们的git服务器上可用)时,我会编写安装说明,如

git clone http://github.com/petered/my_repo.git
git clone http://github.com/petered/my_repo_dependency_1.git
git clone http://github.com/petered/my_repo_dependency_2.git
pip install -e my_repo_dependency_1
pip install -e my_repo_dependency_2
pip install -e my_repo
自述文件中的

。这将安装所有私有依赖项,但在lib/python2.7/site-packages/

中安装所有公共PyPI依赖项