是否可以使用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。
我正在安装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.
希望能对你有所帮助。
一个选项——find-links就可以完成这项工作,并且它可以从requirements.txt文件中工作!
你可以将包存档放在某个文件夹中,并在不更改需求文件的情况下获取最新的包存档,例如需求:
.
└───requirements.txt
└───requirements
├───foo_bar-0.1.5-py2.py3-none-any.whl
├───foo_bar-0.1.6-py2.py3-none-any.whl
├───wiz_bang-0.7-py2.py3-none-any.whl
├───wiz_bang-0.8-py2.py3-none-any.whl
├───base.txt
├───local.txt
└───production.txt
现在在requirements/base.txt中输入:
--find-links=requirements
foo_bar
wiz_bang>=0.8
一个整洁的方法来更新专有软件包,只需在文件夹中删除一个新的
通过这种方式,您可以从本地文件夹和pypi安装包,只需调用pip install -r requirements/production.txt即可
PS.请参阅我的cookiecutter-djangopackage fork,了解如何分割需求和使用基于文件夹的需求组织。