![](/img/trans.png)
[英]How to install dependencies with square brackets in python setup.py?
[英]How to include and install local dependencies in setup.py in Python?
我正在创建一个setup.py来分发我的应用程序。 此应用程序有许多依赖项可以通过 pip 安装,它还有一些自定义依赖项不能从 PyPI 安装。
因此,我创建了一个custom_package_0.1.whl
,它将包含在发行版中,并且必须在setup.py从install_requires
安装所有内容后作为依赖项安装。
想象一下以下应用程序结构:
my_app/
win_deps/custom_package_0.1.whl
my_app/
__init__.py
main.py
setup.py
setup.cfg
我怎么做?
有一种新技术(自 19.1 版起)称为Direct references 。 假设您的文件托管在本地主机上。
from setuptools import setup
path_to_my_project = "/home/user/projects/my_package" # Do any sort of fancy resolving of the path here if you need to
setup(# ... other arguments
install_requires=[f"my_package @ file://localhost/{path_to_my_project}#egg=my_package"]
)
有可能但不确定您应该使用哪个 setuptools 版本。 脚步:
在 setup.py 中
setup(
...,
install_requires=['my-package'],
dependency_links=[
# location to your egg file
os.path.join(os.getcwd(), 'deps', 'my_package-1.0.0-py3.5.egg')
]
)
重要的是您的位置不应该通过 URL 模式测试,并且 egg 文件名应该具有结构<package_name_with_no_hyphens>-<version>-<py_version>.egg
基于上面的@RunOrVeith 回答,这适用于使用相对路径的本地 wheel 文件。 所以它可以在各种主机上安装第三方 package。适用于 Windows 和 Unix。
setup(# ... other arguments
install_requires=[
f"my-lib @ file://localhost/{os.getcwd()}/libs/my_lib-xxx-none-any.whl"
]
)
扩展 wiesiu_p 的答案,您可以通过链接到其源目录来安装依赖项,该目录具有自己的setup.py
。
假设你有你的依赖的源文件my-dependency
,以及根my-dependency
有其自身setup.py
。 在您的应用程序的setup.py
:
setup(
...,
install_requires=['other-dependency','my-dependency'],
dependency_links=[
# location to your my-dependency project directory
''.join(['file:\\', os.path.join(os.getcwd(), 'path', 'to', 'my-dependency#egg=my-dependency-1.0')])
]
)
现在,如果您使用应用程序的setup.py
运行python setup.py install
,它将安装my-dependency
。
您可以从以下几个选项中进行选择:
dependency_links
的 URL。my_app
包中,并将其与packages
参数链接,而不是使用轮文件。setuptools
api,然后自己安装包。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.