2016-04-07 3 views
1

У меня есть сценарий Python, который хочет использовать BeautifulSoup:Python импорт BeautifulSoup не работает

from bs4 import BeautifulSoup 

Когда я запускаю скрипт из командной строки, он отлично работает. Когда я запускаю скрипт извне, из браузера он умирает на этой линии. Веб-журналы говорят:

ImportError: No module named bs4 

Я также попытался, с тем же результатом:

import bs4 
import BeautifulSoup 

Я установил модуль из тарболла, и теперь он находится в папке, которая находится в моем Python путь:

/usr/home/myName/.local/lib/python2.7/site-packages/ 

Я сделал, что разрешения для каталога bs4, и все .py и .pyc файлы в папке разрешить выполнение (chmod 775 *.py), и я проверил, что как межд по-умолчанию и снаружи выполняется одна и та же версия Python (2.7.9 (default, Jan 12 2015, 16:33:18) [GCC 4.2.1 20070719 [FreeBSD]])

+2

«Когда я попал в сценарий с веб-сервера» - то ваш веб-сервер не имеет BeautifulSoup установлен –

+3

Ваш веб-сервер не работает как ваш пользователь, и папка, в которой вы установили BeautifulSoup, не входят в PYTHONPATH для этого пользователя. – kindall

+0

Вы установили 'beautifulsoup' или' beautifulsoup4'? (должен быть последним) –

ответ

0

Благодаря @ robᵩ (фи) за указание на то, что было не так: потому что этот сценарий был на общем сервере, я не смог дать выполнить разрешение «пользователю», выполняющему веб-сервер (в данном случае «никто»). I был, способный запускать скрипт с помощью ssh, так как я был пользователем в этом случае.

Поскольку я не смог убедить хостинг-сервис установить BeautifulSoup для всех пользователей, я закончил использовать другую библиотеку, lxml.html, которую мой хост-сервер устанавливает с помощью Python.

(я нашел lxml.html удовольствие работать с, а)

1

Вы не установили BeautifulSoup в интересах всех пользователей вашего компьютера. Вместо этого вы установили только для пользователя с именем «myName». В частности, вы не установили его для использования пользователем, который запускает веб-сервер (часто называемый «www» или «www-data»).

Если вы можете, установите BeautifulSoup в общесистемное положение.

В противном случае, вы можете изменить свой скрипт так:

import sys 
sys.path[0:0] = ['/usr/home/myName/.local/lib/python2.7/site-packages/'] 
from bs4 import BeautifulSoup 
+0

Хм, это не сработало для меня. Ваше объяснение имеет смысл, и я попытаюсь установить его в системном масштабе. – coco

+0

Я хотел бы отметить ваш ответ правильно, поскольку вы указали, что я сделал неправильно. Но предложенная вами сценария никогда не работала для меня. – coco

+0

Не стесняйтесь правильно отметить мой ответ или, что еще лучше, написать ответ, который точно описывает, что вы сделали для решения проблемы. Затем вы можете принять свой собственный ответ, поскольку он будет более правильным, чем мой. –

Смежные вопросы