是否可以使用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。


当前回答

只需在pip命令上添加目录 PIP安装mypackage文件:/location/in/disk/mypackagename.filetype

其他回答

我很确定你要找的是——找到链接选项。

你可以这样做

pip install mypackage --no-index --find-links file:///srv/pkg/mypackage

我正在安装pyfuzzybut is not in PyPI;它返回消息:没有为pyfuzzy找到匹配的分布。

我试着用公认的答案回答

pip install  --no-index --find-links=file:///Users/victor/Downloads/pyfuzzy-0.1.0 pyfuzzy

但它也不工作,并返回以下错误:

忽略索引:https://pypi.python.org/simple 收集pyfuzzy 无法找到满足pyfuzzy要求的版本(from versions:) pyfuzzy没有找到匹配的分布

最后,我找到了一个简单的好办法:https://pip.pypa.io/en/latest/reference/pip_install.html

Install a particular source archive file.
$ pip install ./downloads/SomePackage-1.0.4.tar.gz
$ pip install http://my.package.repo/SomePackage-1.0.4.zip

所以下面的命令对我有用:

pip install ../pyfuzzy-0.1.0.tar.gz.

希望能对你有所帮助。

你需要的是——找到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目录。

就我而言,这是因为这个库依赖于另一个本地库,而我还没有安装。使用pip安装依赖,然后安装依赖库,解决了这个问题。

在安装包页面,你可以简单地运行:

PIP install /srv/pkg/mypackage

其中/srv/pkg/mypackage为目录,包含setup.py。


另外,你可以从存档文件中安装它:

PIP install ./mypackage-1.0.4.tar.gz

1 虽然在问题中提到,但由于它的受欢迎程度,它也包括在内。