是否可以使用本地文件系统中的pip安装软件包?
我为我的包运行了 python setup.py sdist
,它创建了相应的tar.gz文件 . 该文件存储在我的系统 /srv/pkg/mypackage/mypackage-0.1.0.tar.gz
.
现在,在虚拟环境中,我想安装来自pypi或来自特定本地位置 /srv/pkg
的软件包 .
这可能吗?
PS 我知道我可以指定 pip install /srv/pkg/mypackage/mypackage-0.1.0.tar.gz
. 这将有效,但我正在谈论使用 /srv/pkg
位置作为点击搜索的另一个地方,如果我键入 pip install mypackage
.
7 回答
这很简单 . 您需要的命令是:
请注意,该目录中必须包含
setup.py
文件我正在安装
pyfuzzy
但是不在PyPI中;它返回消息:No matching distribution found for pyfuzzy
.我尝试了接受的答案
但它也不起作用并返回以下错误:
最后,我在那里找到了一个简单的好方法:https://pip.pypa.io/en/latest/reference/pip_install.html
所以以下命令对我有用:
希望它可以帮到你 .
关于什么::
例如,
pip install -e /srv/pkg
其中/ srv / pkg是可以找到'setup.py'的顶级目录 .
选项--find-links完成工作,它可以从
requirements.txt
文件中运行!您可以将包存档放在某个文件夹中,并在不更改需求文件的情况下获取最新的文件夹,例如
requirements
:现在
requirements/base.txt
放:更新专有软件包的简洁方法,只需在文件夹中删除新软件包即可
通过这种方式,您可以使用相同的单个调用从
local folder
ANDpypi
安装软件包:pip install -r requirements/production.txt
PS . 请参阅我的cookiecutter-djangopackage前叉,了解如何拆分需求并使用基于文件夹的需求组织 .
将
requirements.txt
和egg_dir
中的需求作为目录您可以构建本地缓存:
$ pip download -r requirements.txt -d eggs_dir
然后,使用“缓存”很简单,如:
$ pip install -r requirements.txt --find-links=eggs_dir
这是我最终使用的解决方案:
我从pip install examples以及Rikard's answer another question拼凑了这个 . "--pre"参数允许您安装非 生产环境 版本 . "--no-index"参数避免搜索PyPI索引 . "--find-links=."参数在本地文件夹中搜索(这可以是相对的或绝对的) . 我使用"--log-file","log.txt"和"-vv"参数进行调试 . "--upgrade"参数允许您安装较旧的版本 .
我还找到了卸载它们的好方法 . 当您有多个不同的Python环境时,这非常有用 . 它是相同的基本格式,只使用“卸载”而不是“安装”,并采取安全措施来防止意外卸载:
本地文件夹包含以下文件:install.py,uninstall.py,mypackagename-1.0.zip
我很确定你要找的是
--find-links
选项 .虽然您可能需要为本地包索引生成一个虚拟
index.html
,其中列出了指向所有包的链接 . 此工具有助于:https://github.com/wolever/pip2pi