(Ubuntu) Python3 скрипт работает нормально, но под Apache / wsgi он не может найти модуль селена - PullRequest
1 голос
/ 21 февраля 2020

Вот результаты, когда я устанавливаю селен:

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, он не может найти мой модуль селена. Вот вывод журнала:

[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?

1 Ответ

0 голосов
/ 24 февраля 2020

Вы устанавливаете модуль как пользователь "ubuntu", но Apache работает под другой защищенной учетной записью пользователя. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1. С быстрым решением является установка модуля для всех пользователей. Более сложным решением является создание виртуальной среды, используемой сервером 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'
>>> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...