我有一个脚本,如果尚未安装,则设置为安装依赖项。代码如下:
import importlib
try:
importlib.import_module('selenium')
importlib.import_module('win32com.client')
importlib.import_module('keyboard')
except ImportError:
import pip
pip.main(['install', 'selenium', '--trusted-host'])
pip.main(['install', 'pypiwin32' '--trusted-host'])
pip.main(['install', 'keyboard', '--trusted-host'])
finally:
globals()['selenium'] = importlib.import_module('selenium')
globals()['win32com.client'] = importlib.import_module('win32com.client')
globals()['keyboard'] = importlib.import_module('keyboard')
这在我的计算机和我的几个同事上运行良好,但我团队的其他成员(在同一位置的同一网络上)无法运行。问题似乎是pip起初 - 即使直接从命令行使用“pip install selenium”(甚至使用“pip install --trusted-host pypi.python.org”)调用它也会引发SSL错误:
重试(重试(总数= 4,连接=无,读取=无,重定向=无, status = None))连接被'SSLError(SSLError(1,'[SSL: CERTIFICATE_VERIFY_FAILED]认证验证失败 (_ssl.c:833)'),)':/ simple / selenium
我发现this post导致我尝试使用--trusted-host解决方案但没有成功。我检查了C:Program Data /并且那里没有“pip”文件夹,所以我创建了一个并创建了一个pip.ini配置文件。 (注意:用户级别也没有配置文件。我确认已安装Pip)。
在pip.ini文件中,我从该线程中复制/粘贴了解决方案:
[global]
trusted-host pypi.python.org
pypi.org
files.pythonhosted.org
现在我收到了错误:
configparser.ParsingError: Source contains parsing errors: 'C:\\ProgramData\\pip\\pip.ini'
[line 2]: 'trusted-host pypi.python.org\n'
[line 3]: etc etc etc
[line 4]: etc etc etc
为了看看我是否可以绕过这个过程,我使用easy_install来安装selenium(成功),但它无法找到pywin32。它找到了键盘,但是当运行该模块的setup.py时,它给了我一个错误“没有这样的文件或者指令:'CHANGES.md'。
总结我的问题:
为什么在同一网络上的计算机之间能够使用pip并访问pypi.python.org会有区别? (此外,缺少pip文件夹和pip.ini文件以及默认安装会引发任何红旗吗?)
为什么“pip install --trusted-host pypi.python.org selenium”失败了?
我的配置文件解析出了什么问题?
有没有理由easy_install找不到pywin32?