【问题标题】:FileNotFoundError Selenium Stealth PythonFileNotFoundError Selenium Stealth Python
【发布时间】:2021-06-29 15:36:40
【问题描述】:

我在 MacOS 上的 Python 3.9.3 中运行 selenium-stealth。

当我使用 PyInstaller ( pyinstaller --noconfirm --onefile --console --hidden-import "cmath" "/Users/name/Downloads/AmazonSellerCentral/main.py") 我收到以下错误:

Traceback (most recent call last):
  File "main.py", line 141, in <module>
  File "main.py", line 77, in create_driver
  File "selenium_stealth/__init__.py", line 45, in stealth
  File "selenium_stealth/utils.py", line 8, in with_utils
  File "pathlib.py", line 1255, in read_text
  File "pathlib.py", line 1241, in open
  File "pathlib.py", line 1109, in _opener
FileNotFoundError: [Errno 2] No such file or directory: '/var/folders/7z/3spcsmdx5n344dh0fb5j0hl40000gn/T/_MEIqfmicz/selenium_stealth/js/utils.js'

.

但是,只需运行 python3 main.py 即可。

重新安装 selenium-stealth 没有任何效果,我不确定我可以尝试从这里修复/更改什么?

【问题讨论】:

    标签: python selenium pyinstaller


    【解决方案1】:

    快速周转(有关问题请参阅我在 cmets 部分的评论):
    第 1 步:构建包,参考代码部分中的命令)
    第 2 步:创建文件夹 --> dist\your package(在我的例子中是 slhpackage)\selenium_stealth\js
    第 3 步- 从 https://github.com/diprajpatra/selenium-stealth/tree/main/selenium_stealth/js 复制 js 文件并将其放入第 2 步创建的文件夹中。

    现在您的可执行文件应该可以正常运行了。

    pyinstaller slhpackage.py # build package (1)
    
    
    #Python version ==> Python: 3.9.2 (conda)
    
    

    【讨论】:

    • 还是同样的问题,我不认为它可能是我的代码,因为它在 Windows 上运行良好,在 Windows 和 Mac 上作为 .py 文件运行良好,可能是 3.9.3 的问题.
    • 对此感到抱歉。我尝试了 3.9.2 并且一切都运行良好。 fyip .. 我在 mac 10.15.7(macOS Catalina)
    • 我认为找到了问题,但需要时间进一步调查。
    • 我想,我已经找到了问题,但需要时间进一步调查。请参阅 "github.com/diprajpatra/selenium-stealth/blob/main/…" ,对于它使用 Path(file).parent.joinpath("js/utils.js").read_text() 选择的 js 文件夹,file 由 pyinstaller 更改。第二个问题是 pyinstaller 没有放置需要明确放置的 js 文件夹。一种方法是克隆并为 selenium-stealth 做出贡献,或者如果 file 可以被覆盖,则在 pyinstaller 中探索选项。如果我能解决这个问题,一旦我有时间就会检查。一旦得到修复,将更新答案。谢谢
    • 同意这很可能会起作用,我没有测试过,但它并没有真正以理想的方式解决,也许这意味着编辑远离理想的 selenium-stealth 源代码跨度>
    【解决方案2】:

    我使用 Python 3.9,今天遇到了同样的问题。正如@simpleApp 所说,我遵循了同样的方法,只做了最少的修改,它现在对我有用。

    按照以下给定步骤:

    • 确保您复制了此link 中的所有文件。
    • 粘贴folder_name(might be anthing you wish)/selenium_stealth/js中的所有文件。
      [确保您保持名称 selenium_stealth/js 不做任何修改,否则您将面临冲突。]
    • 然后运行添加了文件夹名称的可执行命令。

    为方便起见,我将其添加到此处,这样不仅对您,而且对使用它的每个人都更容易。

    pyinstaller --noconfirm --onefile --console --icon "dir:\path\to\icon.ico" --add-data "dir:\path\to\folder_name\mentioned\above;." --add-binary "dir:/path/to/chromedriver/chromedriver.exe;./selenium/webdriver" "dir:/path/to/your/python/file.py"
    

    复制代码,根据您的文件路径进行修改(我给出了通用名称)。 我建议您制作一个.bat 文件,以便将代码粘贴到其中以供将来使用。

    这是我的代码的 sn-p:

    @ECHO OFF
    color 09
    echo Immediate direct Conversion of .py to .exe standalone by PiXinCreate
    echo.
    pyinstaller --noconfirm --onefile --console --icon "dir:\path\to\icon.ico" --add-data "dir:\path\to\folder_name\mentioned\above;." --add-binary "dir:/path/to/chromedriver/chromedriver.exe;./selenium/webdriver" "dir:/path/to/your/python/file.py"
    echo.
    echo .exe has been successfully created for .py 
    echo.
    pause.
    exit
    
    • 我的代码实际上在终端窗口中创建了一个单独的可执行文件。
    • 如果不需要,您可以删除图标部分。 如果出现任何问题,请随时恢复。

    【讨论】:

      【解决方案3】:

      您收到的错误表明文件的路径可能有问题。

      确保文件utils.js 存在于它试图定位的路径中。

      如果没有,您可以尝试从外部下载它并将其放置在该路径中。不过,我认为这不是一个好的建议。

      【讨论】:

      • 它肯定在路径中,并且在作为 .py 文件运行时工作正常,而不是作为同一路径中的应用程序运行
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多