2016-10-16 4 views
11

내가 실행할 때이 오류가 경로에 geckodriver을 우분투에 셀레늄을 설치하고 추가 한 후파이썬 - 우분투 OSError에서 셀레늄 : [errno를 20] 아니 디렉토리

from selenium import webdriver 

driver = webdriver.Firefox() 

오류 :

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 135, in __init__ 
self.service.start() 
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/common/service.py", line 64, in start 
stdout=self.log_file, stderr=self.log_file) 
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
errread, errwrite) 
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child 
raise child_exception 
OSError: [Errno 20] Not a directory 

무슨 일이야?

편집 : geckodriver 대신 chromedriver를 사용하여 해결되었습니다.

+0

'driver = webdriver.Firefox()'줄에 geckodriver 경로를 입력 해 보았습니까? 드라이버를 찾지 못할 수도 있습니다. –

+0

@THeeren driver = webdriver.Firefox ("/ home/User/Downloads/wires")와 같은 뜻입니까? 나는이 오류를'Traceback (가장 최근에 마지막으로 호출)했다 : 파일 "", firefox_profile = FirefoxProfile (firefox_profile) 파일 "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox /firefox_profile.py ", 줄 78, __init__ ignore = shutil.ignore_patterns ("parent.lock ","lock ",".parentlock ")) 파일"/usr/lib/python2.7/shutil.py " , line 171, copytree names = os.listdir (src) OSError : [Errno 20] 디렉토리가 아님 : '/ home/User/Downloads/wires' – User

+0

최소한 다음 경로를 포함하여 전체 경로를 제공해야합니다. 드라이버의 이름. 나는 chromedriver를 사용한다. firefox 드라이버의 경우 먼저 프로필을 만들어야 할 수도 있습니다. –

답변

0

"geckodriver"의 이름을 "wires"로 변경하는 것이 문제입니다.

해결 방법은 검색 경로에 "geckodriver"를 추가하여 작동해야합니다.

23

같은 문제가있었습니다.

이 webdriver에 executable_path의 인수를 추가 (만 폴더 geckodriver되지 않음)

driver = webdriver.Firefox(executable_path='/path/to/geckodriver') 

및 내보내기를 사용하여 geckodriver이 포함되어 그 폴더를 추가 할 수있는 두 번째 방법을 : 나를 위해이 문제를 해결하는 방법은 두 가지가 있었다

$ export PATH=$PATH:/path/to/ 
+0

감사 @Poloq .. 당신이 내 시간 이 저장 : '드라이버 = webdriver.Firefox (executable_path = '/ 경로 /에가/geckodriver')을'나를 위해 작품 ... –

+0

이 이상한, 나는를 사용 했 export 옵션을 사용하고 작동하지 않았지만 python 코드에서'executable_path'를 지정하면 왜 어떤 아이디어가 나온 것입니까? –

+0

고맙습니다. 나는 더 많은 시간을 낭비했다. 마침내 효과가있었습니다. –

1

@ Poloq의 답변 외에도 가장 간단한 방법은 이미 PATH에있는 디렉토리에 geckodriver 바이너리를 보관하는 것입니다.

이렇게하면 다른 시스템에 배포 할 때 추가 단계가있는 단점이있는 추가 설정/구성을 피할 수 있습니다.

관련 문제