假设我没有互联网,并且有一个以10.0.0.2运行的自定义PyPI克隆。
我想写一个Python包,让我的内联网上的人可以安装。它有依赖项X,它存在于我的自定义PyPI克隆上。
我如何编写我的包,以便有人可以安装它,引入依赖项X,而不需要应用任何特殊的pip配置?也就是说,我如何编写我的包,以便安装它引入自定义的PyPI依赖项?在这个约束条件下,我只能编辑setup.py
。
上下文是,我使用的托管服务接受带有setup.py文件的tar Python包,然后运行pip来安装所有内容。我无法访问pip的调用方式,也无法访问该系统上的任何环境配置。
有没有一种方法可以单独通过setup.py从PyPI的自定义IP地址拉入包?
据我所知,您无法更新setup.py以指向特定服务器下载依赖项。然而,执行pip安装的人可以指定使用哪个服务器来查找包及其依赖项,并使用-i标志,如
pip install -i http://localhost:8000 <package>
另一方面,依赖项可以在setup.py中指定。在setuptools.setup中,您可以声明如下的依赖项:
import sys
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="somepackage",
version="0.0.1",
author="Your Name",
author_email="no.replies@example.com",
description="Some desc",
long_description=long_description,
long_description_content_type="text/markdown",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3.8"
],
install_requires=["dependency1", "dependency2"]
)