sup*_*mmy 4 python pip pypi python-wheel python-packaging
pip 是否能够递归搜索文件系统路径并安装包及其依赖项?例如,给定以下文件结构(文件未显示)pip install packageA -f C:\packages\不起作用。
C:\packages\
C:\packages\packageA\
C:\packages\packageA\1.0.0
C:\packages\packageA\1.0.1
C:\packages\packageB\
C:\packages\packageB\2.2.1
C:\packages\packageB\2.2.4
Run Code Online (Sandbox Code Playgroud)
此外,这些包可以是带有 setup.py 文件的纯源吗?或者它们是否需要是像wheel 或zip 文件这样的二进制文件。最后,有没有办法解决依赖关系?例如,如果 packageA 需要 packageB 的版本,pip 可以从我的文件夹中获取该版本的 packageB 吗?我是否需要 html 文件来指示事物的位置和内容?
我知道我可以将 pip 直接指向本地路径 ( pip install C:\packages\packageA\1.0.0),但我希望它能够像 PyPI 中提供包一样运行。例如,如果用户键入pip install packageB或 ,pip install requirements.txt并且该需求文件包含本地存在但 PyPI 中不存在的包,那么它就会起作用。(我可以在配置文件中设置本地包存储路径,这样 pip 命令就不需要 -f 参数)
基本上,我想使用没有网络服务器的文件系统来复制 PyPI 功能(安全性不允许我们运行一个)。任何见解将不胜感激。
我明白了这一点。我使用了一个名为pip2pi的包。该软件包有一个名为 dir2pi 的命令。我创建一个包含 tar.gz 文件的目录。每个 tar.gz 文件都是使用此布局创建的 Python 包。为了标识版本,我添加了一个连字符,然后使用语义版本控制。
该目录如下所示:
C:\packages\package_a-1.0.8.tar.gz
C:\packages\package_a-1.1.0.tar.gz
C:\packages\package_b-2.0.0.tar.gz
C:\packages\package_c-1.0.5.tar.gz
Run Code Online (Sandbox Code Playgroud)
然后我就跑了,dir2pi C:\packages -S. 这将创建必要的 HTML 文件和文件夹布局。在该文件夹的根目录下,创建了一个名为 simple 的文件夹。simple这个名字似乎是 PEP 503 的东西。在简单的内部,文件夹结构如下所示:
C:\packages\simple\index.html
C:\packages\simple\package_a
C:\packages\simple\package_a\index.html
C:\packages\simple\package_a\package_a-1.0.8.tar.gz
C:\packages\simple\package_a\package_a-1.1.1.tar.gz
C:\packages\simple\package_b
C:\packages\simple\package_b\index.html
C:\packages\simple\package_b\package_b-2.0.0.tar.gz
C:\packages\simple\package_c
C:\packages\simple\package_c\index.html
C:\packages\simple\package_c\package_c-1.0.5.tar.gz
Run Code Online (Sandbox Code Playgroud)
这显然就是 pip 的兼容文件/文件夹布局。
每个index.html 文件都包含指向其相邻文件和文件夹的链接。例如,C:\packages\simple\index.html看起来像这样:
<html><head><title>Simple Index</title><meta name='api-version' value='2' /></head><body>
<a href='package_a/'>package_a</a><br />
<a href='package_b/'>package_b</a><br />
<a href='package_c/'>package_c</a><br />
</body></html>
Run Code Online (Sandbox Code Playgroud)
C:\packages\simple\package_a\index.html看起来像这样:
<a href='package_a-1.0.8.tar.gz'>package_a-1.0.8.tar.gz</a><br />
<a href='package_a-1.1.1.tar.gz'>package_a-1.1.1.tar.gz</a><br />
Run Code Online (Sandbox Code Playgroud)
现在有了正确的 HTML 文件和文件夹结构,我告诉 pip 在文件夹中查找包C:\packages\simple。我通过编辑 pip.ini 文件(位置因系统而异)并添加以下行来完成此操作:
[global]
extra-index-url = file:///c:/packages/simple
Run Code Online (Sandbox Code Playgroud)
或者,我也可以将此文件夹作为参数传递给 pip,如下所示:
pip install --index-url=file:///c:/packages/simple package_a==1.1.1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3248 次 |
| 最近记录: |