我正在创建一个需要 Selenium 作为依赖的 Python 包。要在本地使用 Selenium,需要先安装 Chrome/Firefox 驱动程序。我想知道是否有一种方法可以在使用 pip 安装我的包时同时安装该驱动程序,以便不需要进行额外的驱动程序安装步骤即可立即使用我的包?
我正在创建一个需要 Selenium 作为依赖的 Python 包。要在本地使用 Selenium,需要先安装 Chrome/Firefox 驱动程序。我想知道是否有一种方法可以在使用 pip 安装我的包时同时安装该驱动程序,以便不需要进行额外的驱动程序安装步骤即可立即使用我的包?
pip install webdriver-manager
from webdriver_manager.chrome import ChromeDriverManager
webdriver.Chrome(ChromeDriverManager().install())
同样地,您也可以配置其他驱动程序。
离线工作
如果您想让您的Python包在没有运行时依赖性的情况下工作,并且需要将驱动程序与您的包一起打包。 那么您可以使用以下代码来下载并获取下载路径。 然后,您可以将驱动程序移到您的资源中并以编程方式进行打包。
executable_path=ChromeDriverManager().install()
setup.py
import pkg_resources
from setuptools import setup
from setuptools.command.install import install
class PostInstallCommand(install):
def run(self):
driver = pkg_resources.resource_filename(__name__, 'geckodriver.exe')
# do whatever you want to do with your driver
install.run(self)
setup(
name='mypackage',
version='1.0',
packages=['mypackage'],
package_data = {'mypackage': ['drivers/*']},
description='Test',
author='Batman',
author_email='batman@superheroes.com',
install_requires=['selenium>=3.14.1'],
cmdclass={'install': PostInstallCommand}
)