Windowsでは、pyinstallerを用いて、バイナリ化することに成功したのですが、
macosでは、うまく動かず、py2appを使用して実装してみています。
ですが、py2appもうまく動かず、distフォルダの中に.appファイルはできるのですが、
ダブルクリックするとエラーが出て実行されません。
エラー内容は下記です。
Non-fatal error enumerating at <private>, continuing: Error Domain=NSCocoaErrorDomain Code=260 "ファイル“PlugIns”は存在しないため、開けませんでした。" UserInfo={NSURL=PlugIns/ ・・・
webdriverを含めずに実行すると、エラーはでず、動きます。
OSの環境の問題だと思うのですが、なかなか解決できず。。。。
以下、pythonファイルとsetup.pyです。
from selenium.webdriver.chrome.options import Options from selenium import webdriver import chromedriver_binary import time import os import csv #------------------ディレクトリ作成------------------ cur_dir = os.getcwd() sitecapture_dir = os.getenv("HOME") + "/Desktop/" + "サイトキャプチャーフォルダ" os.makedirs(sitecapture_dir, exist_ok=True) #------------------------------------------------ def get_capture(): options = Options() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(chrome_options=options) url_list_file = open(cur_dir + "/utl_list.csv") reader = csv.reader(url_list_file) number = 0 for url in reader: driver.get(url[0]) time.sleep(10) title = driver.title if "|" in title: title = title.replace("|", "_") elif "¥" in title: title = title.replace("¥", "_") elif "/" in title: title = title.replace("/", "_") elif ":" in title: title = title.replace(":", "_") elif "*" in title: title = title.replace("*", "_") elif "?" in title: title = title.replace("?", "_") elif '"' in title: title = title.replace('"', "_") elif '<' in title: title = title.replace('<', "_") elif '>' in title: title = title.replace('>', "_") time.sleep(10) page_width = driver.execute_script('return document.body.scrollWidth') page_height = driver.execute_script('return document.body.scrollHeight') driver.set_window_size(page_width, page_height) driver.save_screenshot(sitecapture_dir + "/" + str(number) + "_" + title + ".jpg") number += 1 get_capture()
""" This is a setup.py script generated by py2applet Usage: python setup.py py2app """ from setuptools import setup APP = ['auto_capture.py'] DATA_FILES = ['utl_list.csv'] OPTIONS = { 'argv_emulation': True, 'includes': ['selenium'] } setup( app=APP, data_files=DATA_FILES, options={'py2app': OPTIONS}, setup_requires=['py2app'], )
あなたの回答
tips
プレビュー