pip将本地包安装到目标目录

时间:2017-11-29 05:56:53

标签: python google-app-engine pip

我有一个发布到PyPI的Python库。在推送每个新版本的库之前,我想通过升级示例应用程序来测试它以使用新版本。

执行此操作的suggested method是使用-e--editable)标记在“开发模式”下工作:

$ pip install -e <my package root>

这确实将软件包安装到我的全球环境中。

但是,我的示例程序是为Google App Engine编写的,这需要all third-party libraries be copied进入特定于应用程序的文件夹(在我的情况下为./lib)。我通常使用-t--target)选项在此处安装包:pip:

$ pip install -t lib/ <package>

但是,似乎-e-t选项are not compatible以及我尝试将本地未发布的库安装到指定的两个标志一起使用的目标文件夹失败。

如何在发布之前将其安装在自定义目录中来测试我的库包?

3 个答案:

答案 0 :(得分:1)

改编Jeffrey Godwyll Google App Engine Vendoring Done Right的指示为我工作:

cd ~/app-engine-project-directory
mkdir lib
ln -s env/lib/python2.7/site-packages lib
pip install -e ../my-local-dependency

(当然,您可能需要根据您正在使用的Python版本更改第三行。)

答案 1 :(得分:1)

对于新软件包的一次性测试,直接从本地文件系统安装似乎是最好的选择:

$ cd /my/sample/application
$ pip install -t lib /my/local/package

当我对本地软件包进行进一步更改时,这个安装不会保持同步(就像我使用pip install --editable那样),但是对于这个用例,我可以不用它。< / p>

由于pip install -e使用&#34; egg-info&#34;的方式,我无法让@pbaranay's answer工作。 GAE的dev_appserver.py脚本显然无法理解/遍历的文件。建议使用virtualenv并将其符号链接到lib(而不是使用-t直接将包安装到lib)是一个很好的建议。

答案 2 :(得分:0)

您可以使用-e将您的软件包安装到本地python安装中或任何您想要的位置,然后将该特定本地软件包目录符号链接到您应用的lib目录:

ln -s /my/local/package /my/sample/application/lib/