以下是安装selenium时的结果:
ubuntu@ip-172-31-23-71:~$ pip3 install selenium
Collecting selenium
Downloading https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)
100% |████████████████████████████████| 911kB 1.6MB/s
Collecting urllib3 (from selenium)
Downloading https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB)
100% |████████████████████████████████| 133kB 9.2MB/s
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.13.1 // so the installation worked.
You are using pip version 8.1.1, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
这是我的python脚本(helloworld.py(:
#!/usr/bin/python3
from selenium import webdriver
def testPrint():
return "Test print"
def application(environ,start_response):
status = '200 OK'
html = '<html>n'
'<body>n'
'<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">n'
'Hello world! n' + testPrint() +
'</div>n'
'</body>n'
'</html>n'
response_header = [('Content-type','text/html')]
start_response(status,response_header)
return [html]
它在正常情况下编译:
ubuntu@ip-xxx-xx-xx-xx:/var/www/html/pythonscrape$ python3 helloworld.py
ubuntu@ip-xxx-xx-xx-xx:/var/www/html/pythonscrape$
正如你所看到的,编译"来自硒导入网络驱动程序"一行没有问题
ubuntu@ip-xx-xx-xx-xx:/var/www/html/pythonscrape$ python3
Python 3.5.2 (default, Oct 8 2019, 13:06:37)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>>
所以你看不到任何错误。
然而,当我通过浏览器/Apache/wsgi运行它时,它找不到我的selenium模块。这是日志输出:
[Fri Feb 21 14:43:34.952035 2020] [wsgi:error] [pid 15279] [client 108.210.66.3:64700] mod_wsgi (pid=15279): Exception occurred processing WSGI script '/var/www/html/pythonscrape/helloworld.py'.
[Fri Feb 21 14:43:34.952130 2020] [wsgi:error] [pid 15279] [client 108.210.66.3:64700] Traceback (most recent call last):
[Fri Feb 21 14:43:34.952207 2020] [wsgi:error] [pid 15279] [client 108.210.66.3:64700] File "/var/www/html/pythonscrape/helloworld.py", line 3, in <module>
[Fri Feb 21 14:43:34.952318 2020] [wsgi:error] [pid 15279] [client 108.210.66.3:64700] from selenium import webdriver
[Fri Feb 21 14:43:34.952396 2020] [wsgi:error] [pid 15279] [client 108.210.66.3:64700] ImportError: No module named selenium
这是我的helloworld.conf文件:
WSGIScriptAlias /helloworld /var/www/html/pythonscrape/helloworld.py
ErrorLog /var/www/html/pythonscrape/error_log.txt
<Directory /var/www/html/pythonscrape/>
Options Indexes FollowSymLinks Includes ExecCGI
Order allow,deny
Allow from all
</Directory>
我该怎么做才能让Apache/wsgi识别硒模块?
您以"ubuntu"用户身份安装模块,但Apache在不同的安全用户帐户下运行。您的Apache服务器不知道用户安装的selenium模块,也看不到selenium组件。
快速解决方案是为所有用户全局安装模块。一个更复杂的解决方案是创建一个Apache服务器使用的虚拟环境。
对于快速修复(全局安装(:
sudo pip3 install selenium
Collecting selenium
Downloading https://files.pythonhosted.org/packages/80/d6/4294f0b4bce4de0abf13e17190289f9d0613b0a44e5dd6a7f5ca98459853/selenium-3.141.0-py2.py3-none-any.whl (904kB)
100% |################################| 911kB 1.8MB/s
Collecting urllib3 (from selenium)
Downloading https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl (125kB)
100% |################################| 133kB 7.1MB/s
Installing collected packages: urllib3, selenium
Successfully installed selenium-3.141.0 urllib3-1.25.8
You are using pip version 8.1.1, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
该模块现在安装在全局位置(/usr/local(,可用于Apache:
Python 3.5.2 (default, Oct 8 2019, 13:06:37)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import selenium
>>> selenium.__file__
'/usr/local/lib/python3.5/dist-packages/selenium/__init__.py'
>>>