pip 安装作为源,依赖项分开

pip install as source with dependencies separate

我正在尝试发布一个演示存储库(人们可以在其中直接 运行 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=.

这会将所有内容安装在根(当前)目录中。但是所有的依赖项也最终都在这个目录中。

如何在当前目录下只安装一个包的源代码,而将所有依赖项都安装在默认目录下?

我的项目通常有一个 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/... 中,因为库本身没有关于它是如何安装的想法。

每当我有多个 "private dependencies"(闭源,仅在我们的 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/.

中安装所有 public PyPI 依赖项