是否可以使用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搜索的另一个地方,如果我键入pip install mypackage。
我一直在努力实现一些非常简单的事情,却不幸地失败了,可能是我太傻了。
不管怎样,如果你有一个脚本/Dockerfile下载了一个python包压缩文件(例如从GitHub),然后你想安装它,你可以使用文件:///前缀来安装它,如下例所示:
$ wget https://example.com/mypackage.zip
$ echo "${MYPACKAGE_MD5} mypackage.zip" | md5sum --check -
$ pip install file:///.mypackage.zip
注意:我知道你可以使用pip install https://example.com/mypackage.zip直接安装这个包,但在我的情况下,我想验证校验和(从来都不够偏执),当我尝试使用pip提供的各种选项/ #md5片段时,我失败了。
直接用pip来做这么简单的事情令人非常沮丧。我只是想传递一个校验和,并让pip在安装之前验证zip是否匹配。
我可能做了一些非常愚蠢的事情,但最后我放弃了,选择了这个。我希望它能帮助其他尝试做类似事情的人。
你需要的是——找到pip install的链接。
-f,——find-links如果是html文件的url或路径,则解析到存档的链接。如果是本地路径或
file:// url,这是一个目录,然后在目录列表中查找存档。
在我的例子中,在python -m build之后,tar.gz包(和whl文件)在./dist目录下生成。
pip install --no-index -f ./dist YOUR_PACKAGE_NAME
./dist目录下的任何tar.gz python包都可以通过这种方式安装。
但是如果您的包有依赖项,这个命令将提示错误。
为了解决这个问题,你可以从官方的pypi源代码安装这些deps,然后像这样添加——no-deps
pip install --no-index --no-deps -f ./dist YOUR_PACKAGE_NAME
或者复制你的deps包到。/dist目录。