代码之家  ›  专栏  ›  技术社区  ›  pwwolff

Pyinstaller-带SQLServer的SQLAlchemy

  •  0
  • pwwolff  · 技术社区  · 2 年前

    我有一个命令行脚本,我正试图使用pyinstaller构建到一个.exe文件中。我正在使用SQLAlchemy连接到数据库。

    import sys
    from urllib.parse import quote_plus
    from sqlalchemy import create_engine
    
    # Press the green button in the gutter to run the script.
    username = sys.argv[1]
    password = sys.argv[2]
    hostname = sys.argv[3]
    engine = 'mssql+pytds'
    port = sys.argv[4]
    technical_name = sys.argv[5]
    uri = f"{engine}://{username}:{quote_plus(password)}@{hostname}:{port}/{technical_name}"
    pool = create_engine(uri)
    

    我跑步

    pyinstaller --onefile main.py
    

    但是,当我尝试在dist/文件夹中执行生成的main.exe时,我会得到错误:

    sqlalchemy.exc.NoSuchModule错误:无法加载插件:sqlalchem.方言:mssql.pytds

    如何包含用于sqlalchemy的mssql.pytds?我的环境和requirements.txt中安装了sqlalchemy-pytds和python-tds

    编辑:当我简单地运行时,上面的代码执行成功

    python main.py user pw 127.0.0.1 1433 dbname

    0 回复  |  直到 2 年前
        1
  •  1
  •   pwwolff    2 年前

    刚刚想明白了。我最终明确地将所有导入添加到python脚本中。我一次处理一条错误信息,添加它所说的缺失内容。

    为了子孙后代,导入部分的版本允许我以exe的形式构建和运行程序:

    import sys
    from urllib.parse import quote_plus
    from sqlalchemy import create_engine
    import sqlalchemy_pytds
    import sqlalchemy.sql.default_comparator
    import sqlalchemy.engine.default
    import sqlalchemy
    import sqlalchemy_pytds.dialect
    

    猜测有更好的方法可以做到这一点,但在这里分享并将使用它,因为它对我有效。如果这里有任何“更清洁”的解决方案/最佳实践,我仍然感兴趣,并很乐意接受另一个答案。