Python PIP:仅安装依赖项

Python PIP:仅安装依赖项,python,pip,virtualenv,distribute,Python,Pip,Virtualenv,Distribute,我有一个脚本,可以创建一个virtualenv,在其中安装distribute和pip,然后选择性地克隆一个gitrepo 现在我有我将要工作的项目,安装。但是它的依赖项没有安装。如何使pip安装所有依赖项,就好像我已经发布了pip安装MyApp 编辑:我的问题显然是重复的 不完全确定,但是pip安装-e。似乎可以做我想要的事情,而不需要太多额外的东西。如果我的代码没有链接到网站包,我会更喜欢。您应该使用pip需求文件 基本上,将所有需求放在一个文件的每一行中,并使用命令将其传递给pip pip

我有一个脚本,可以创建一个
virtualenv
,在其中安装
distribute
pip
,然后选择性地克隆一个
git
repo

现在我有我将要工作的项目,安装。但是它的依赖项没有安装。如何使
pip
安装所有依赖项,就好像我已经发布了
pip安装MyApp

编辑:我的问题显然是重复的


不完全确定,但是
pip安装-e。
似乎可以做我想要的事情,而不需要太多额外的东西。如果我的代码没有链接到
网站包,我会更喜欢。

您应该使用pip需求文件

基本上,将所有需求放在一个文件的每一行中,并使用命令将其传递给pip

pip install -r requirements.txt
此外,如果您有一个标准环境,pip实际上可以使用以下命令从现有安装中转储这样的文件:

pip freeze
您可以将由此生成的文件直接放入pip需求中,并从部署脚本调用上一个命令


很酷,不是吗?:)

在我的软件包root中发布
pip install-e。
安装依赖项。

如果您的依赖项是在
setup.py
文件中定义的,您可以首先使用以下命令将它们转储到外部文件:

python setup.py egg_info
这将在
your_PROJECT.egg info/requires.txt
文件中列出所有依赖项。然后可以使用
pip
安装它们:

pip install -r *.egg-info/requires.txt

要安装项目的依赖项(即
install\u requires
+
extra\u requires
),您必须使用setuptools
egg info
提取依赖项,然后安装组合依赖项的筛选列表:

python setup.py egg\u info
pip安装'grep-v'^\['*.egg info/requires.txt`

很酷,但它没有回答我的问题。我不是在寻找定义依赖项的方法。完全仔细地阅读问题有助于提供正确答案。等等,你可以将所有依赖项放在一个文件中,让pip为你安装它们。这不就是你要找的吗?如果不是,我没有正确地安装它们坚持你的问题。即使是现在。区别在于“依赖项”是在requirements.txt中指定的(你可以在其中指定“myrepo==1.0.1”或其他内容)或者在您要安装的myrepo包的setup.py中。如果您已经有了repo,那么只有安装依赖项才有意义。@Tgr我认为这是不对的。我只是使用pip3通过一个需求文件进行安装,并安装了几个可传递的依赖项。问题是需要一种安装方法正在开发的包的依赖项。它的依赖项将在包的
setup.py
文件中声明。它甚至可能具有条件依赖项(例如基于OS)。我不认为requirements.txt可以处理这个问题,但即使它可以,您也必须做一些额外的工作,从文件中将需求加载到
setup.py
。我有一个脚本,可以创建virtualenv,在其中安装distribute和pip(…)。你知道你可以用
pip-E VENV_DIR pip
做所有3件事,因为pip默认安装pip并在新创建的环境中分发?酷提示!不过我不再使用上面提到的脚本了。这是一个相当严重的副作用。
-E
以可编辑模式安装,这意味着程序包可以从站点packag链接es而不是复制。我希望这种方法在您尝试真正安装软件包时会导致奇怪而微妙的问题,特别是如果您不先
pip卸载它的话。请注意,它只适用于基于setup.py的版本。目前,还不支持pyproject.toml。请注意,这会尝试安装软件包在某种程度上,它本身也是如此。请参见一个示例,其中这会产生不必要的影响。如果您的setup.py具有
extras\u require
,则requires.txt将包含[dev],因此如果您的setup.py具有
extras\u require
,则在调用
pip install-r