min*_*als 9 python setuptools setup.py
我正在创建一个setup.py来分发我的应用程序.这个应用程序有许多依赖项,可以通过pip安装,它也有一些自定义的依赖项,无法从PyPI安装.
所以,我已经创建了一个custom_package_0.1.whl将包含在发行版中,并且必须在setup.py安装所有内容之后作为依赖项安装install_requires.
想象一下以下app结构:
my_app/
win_deps/custom_package_0.1.whl
my_app/
__init__.py
main.py
setup.py
setup.cfg
Run Code Online (Sandbox Code Playgroud)
我怎么做?
Run*_*ith 10
有一种新技术(自 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"]
)
Run Code Online (Sandbox Code Playgroud)
有可能但不确定您应该使用哪个 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')
]
)
Run Code Online (Sandbox Code Playgroud)
重要的是你的位置不应该通过 URL 模式测试并且 egg 文件名应该有结构 <package_name_with_no_hyphens>-<version>-<py_version>.egg
根据上面的 @RunOrVeith 答案,这适用于使用相对路径的本地轮文件。因此可以在各种主机上使用它来安装第三方软件包。适用于 Windows 和 Unix。
setup(# ... other arguments
install_requires=[
f"my-lib @ file://localhost/{os.getcwd()}/libs/my_lib-xxx-none-any.whl"
]
)
Run Code Online (Sandbox Code Playgroud)