2015-10-30 35 views
4

我正在寻找使用PIP或类同安装Python包的列表,自定义目标目录(ex./mypath/python/pkgs/)的方法,但也排除/黑名单特定依赖关系。皮普安装到自定义的目标目录,而排除特定的相关

我想,因为他们已经从不同的安装路径满足排除特定的依赖关系(例如蟒蛇安装)。我没有权限将软件包添加到默认的python安装(我也不想)。

我目前使用pip的-r和-t选项。但是还没有找到排除特定软件包的方法。

像这样的点子命令将是理想的:

pip install --log pip.log -r req.txt -t /mypath/pypkgs/ --exclude exclude.txt 

--no-deps是不是一种选择,因为我需要一些依赖关系。

目前,我正在追求一个python脚本做PIP安装包括依赖我不需要通过:

pip install --log pip.log -r req.txt -t /mypath/python/pkgs/ 

,然后(自动),删除不需要的依赖画中画安装完成后。

我希望PIP命令的某些组合能达到什么我正在寻找一些简单了。我正在使用点7.1.2。谢谢!

类似,但我不会升级,并希望指定目标路径:

pip: upgrade package without upgrading particular dependency

+0

所以你想用'pip'来安装一个解释器,而不是你用来运行它的解释器? – jonrsharpe

+0

我不知道我回答你的问题@jonrsharpe:当我使用-p [targetdir]的默认安装(anaconda)中的pip时,它似乎忽略了我已经存在的事实(例如,它会安装numpy再次成为[targetdir])。我想在我的目标目录中添加额外的软件包,而没有我的默认安装/解释器的重复依赖项。我打算将自定义路径添加到我的PYTHONPATH。 –

回答

2

我认为这基本上可以分几个步骤来实现,假设你使用的virtualenv或类似.. 。

  • 如果你先做一个正常的pip freeze > requirements.txt你会得到传递依赖的所有(例如,不排除任何东西。)

  • 现在编辑requirements.txt,删除要排除包...

  • 最后,在一个新的环境做pip install -r requirements.txt -t ... --no-deps。 Voila:你已经安装了你想要的依赖项,但排除了特定的依赖项。

+0

是否有可能与其他用户分享virtualenv?我的用例涉及将同事指向他们可以追加到他们的PYTHONPATH环境变量的路径,我们就完成了。目标是我们可以共享的标准/默认python环境(包含自定义和第三方模块)。这个自定义路径将建立在vanilla anaconda安装上。 (操作系统:Linux)。 –

+0

你的意思是像预装二进制文件的网络共享?这听起来像一个坏主意,但我认为只要每个人都有相同的路径,它就会工作。做'pip安装'有什么问题? –

+0

对。我们希望使用共享网络路径,这样我们就可以在团队中共享标准环境 - 除了anaconda之外。 我们处在防火墙环境中 - 所以'pip install'不是一个选项(我们将在防火墙外使用pip,然后将防火墙内的环境传输,以便我们都可以共享。可能有不同的环境)。 回到原来的问题,由于anaconda我们想避免重复的依赖(numpy),但'pip -t/path /'不考虑当前环境。 –

1

面临着类似的问题,并使用运行bash shell的,我设法排除特定的软件包与

pip install $(cat requirements.txt | grep -ivE "pkg1|pkg2|pkg3") 

其中pkg1等都是包排除名称。